Skip to content

Instantly share code, notes, and snippets.

@mccutchen
Created February 2, 2021 21:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mccutchen/ca9f36c269a8b6a62143fc757474d028 to your computer and use it in GitHub Desktop.
Save mccutchen/ca9f36c269a8b6a62143fc757474d028 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import argparse
import subprocess
import sys
import urllib.parse
def main(env: str, services: [str]) -> int:
filters = [f"env:{env}"]
if services:
filters.append(" OR ".join(f"service:{svc_name(s)}" for s in services))
params = {
"query": " ".join(filters),
}
url = f"https://app.datadoghq.com/logs?{urllib.parse.urlencode(params)}"
print(url)
return subprocess.call(["open", url])
def svc_name(s: str):
"""
Allow service to be specified as any of
service
apps/service
apps/service/
/path/to/apps/service/
The form with a trailing slash is likely when using tab completion in the
terminal.
"""
return s.strip("/").split("/")[-1]
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Open datadog logs")
parser.add_argument("env", metavar="ENV", type=str, help="environment")
parser.add_argument(
"services",
metavar="SERVICE",
type=str,
nargs="*",
help="service (optional, can specify more than one)",
)
args = parser.parse_args()
sys.exit(main(args.env, args.services))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment