Skip to main content

tencentcloud-cls-alarm

Manage Tencent Cloud CLS alarm policies, notice groups, shields and alarm execution logs. Use when the user asks to: list / create / modify / delete CLS alarms, enable or disable alarms, manage notice recipients (SMS / email / webhook), mute alarms during deploys, or view which alarms fired and when. For searching the underlying log content, use the companion `tencentcloud-cls` skill.

소스 정보

저장소
AceDataCloud/Skills
최근 소스 활동
2026년 7월 5일 08:08
감지된 SKILL.md 언어
영어
스타
17
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
tencentcloud-cls-alarm
description
Manage Tencent Cloud CLS alarm policies, notice groups, shields and alarm execution logs. Use when the user asks to: list / create / modify / delete CLS alarms, enable or disable alarms, manage notice recipients (SMS / email / webhook), mute alarms during deploys, or view which alarms fired and when. For searching the underlying log content, use the companion `tencentcloud-cls` skill.
license
Apache-2.0
metadata
{"author":"acedatacloud","version":"1.0"}
connections
["tencentcloud"]
# Tencent Cloud CLS — Alarm Management CRUD on CLS alarm policies, notice groups, mute shields, and the alarm execution log. > **Setup:** See [tencentcloud authentication](../_shared/tencentcloud.md). Defaults to `TENCENTCLOUD_REGION` from env; CLS alarms live per-region. > > **Companion skill:** `tencentcloud-cls` for log content search. ## CLI (preferred) The skill ships [`scripts/cls_alarm.py`](scripts/cls_alarm.py) — wraps every alarm / notice / shield operation as a subcommand. ```bash # $SKILL_DIR can point at another skill loaded this turn — anchor on our own # script (re-run this at the top of every fresh-shell Bash block). CLSA="$SKILL_DIR/scripts/cls_alarm.py"; [ -f "$CLSA" ] || CLSA=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/cls_alarm.py' 2>/dev/null | head -1) [ -f "$CLSA" ] || { echo "tencentcloud-cls-alarm script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; } python3 "$CLSA" alarms # list policies python3 "$CLSA" alarm <alarm-id> # full detail python3 "$CLSA" alarm-disable <alarm-id> # quick mute (Status=false) python3 "$CLSA" alarm-enable <alarm-id> python3 "$CLSA" alarm-create --json /tmp/alarm.json --dry-run python3 "$CLSA" alarm-modify <alarm-id> --condition '$1.cnt > 20' python3 "$CLSA" alarm-delete <alarm-id> --yes # destructive python3 "$CLSA" notices # notice groups python3 "$CLSA" notice <notice-id> python3 "$CLSA" shields # mute rules python3 "$CLSA" shield-create --notice-id <notice-id> --start $(date +%s) --end $(date -v+2H +%s) --type 1 --reason "deploy" python3 "$CLSA" alarm-log --time 6h # firing history ``` For the rare schema field the CLI doesn't surface, fall through to the raw SDK examples below. ## When to Use - Inspect existing alarm policies (filter by name, enabled flag) - Create a new log-based alarm: CQL/SQL query → trigger condition → notice group - Modify thresholds, query, period, recipients - Quick enable / disable to mute during incidents - Manage notice groups (recipients: users, groups, webhooks, with escalation) - Time-bounded shield rules to mute during deploys - Pull the alarm execution log to see *which* alarms fired and when ## Dependencies ```bash pip install tencentcloud-sdk-python ``` ## Quick start ```python import os import json from tencentcloud.common import credential from tencentcloud.cls.v20201016 import cls_client, models cred = credential.EnvironmentVariableCredential().get_credential() client = cls_client.ClsClient(cred, os.environ["TENCENTCLOUD_REGION"]) ``` ## Key concepts | Object | API methods | What it is | |---|---|---| | Alarm policy | `DescribeAlarms` / `CreateAlarm` / `ModifyAlarm` / `DeleteAlarm` | Query against one or more topics + condition + notice groups | | Notice group | `DescribeAlarmNotices` / `CreateAlarmNotice` / … | Recipients (users / groups / webhooks) + escalation | | Shield | `DescribeAlarmShields` / `CreateAlarmShield` / … | Time-bounded mute scoped to a notice group | | Alarm log | `GetAlarmLog` | Firing history | ## Workflows ### List alarm policies ```python req = models.DescribeAlarmsRequest() req.Limit = 100 # Optional filters: req.Filters = [{"Key": "name", "Values": ["DeepSeek"]}] resp = client.DescribeAlarms(req) for a in resp.Alarms: print(a.AlarmId, a.Name, "Enable=", a.Enable, "Status=", a.Status) ``` ### Get a single alarm policy in full ```python req = models.DescribeAlarmsRequest() req.Filters = [{"Key": "alarmId", "Values": ["<alarm-id>"]}] resp = client.DescribeAlarms(req) print(json.dumps(resp.Alarms[0]._serialize(), indent=2, ensure_ascii=False)) ``` ### Create an alarm ```python req = models.CreateAlarmRequest() req.Name = "OpenAI 5xx burst" req.AlarmTargets = [{ "TopicId": "<trace-topic-id>", "Query": "* | select count(*) as cnt where status_code >= 500", "Number": 1, "StartTimeOffset": -5, "EndTimeOffset": 0, "SyntaxRule": 1, # 1 = CQL, 0 = Lucene }] req.MonitorTime = {"Type": "Period", "Time": 1} req.Condition = "$1.cnt > 10" req.AlarmPeriod = 5 # evaluate every 5 minutes req.TriggerCount = 1 # fire after 1 consecutive match req.AlarmLevel = 2 # 0=Notice, 1=Warning, 2=Critical req.AlarmNoticeIds = ["<notice-id-a>", "<notice-id-b>"] req.MonitorObjectType = 0 req.Enable = True resp = client.CreateAlarm(req) print("Created", resp.AlarmId) ``` ### Quick enable / disable ```python req = models.ModifyAlarmRequest() req.AlarmId = "<alarm-id>" req.Status = False # mute (Status — runtime), keep Enable=True client.ModifyAlarm(req) ``` > **`Enable` vs `Status`** are different fields. `Enable=False` archives the alarm definition; `Status=False` is the everyday on/off switch you want for muting. ### Modify thresholds without rewriting the whole payload ```python req = models.ModifyAlarmRequest() req.AlarmId = "<alarm-id>" req.Condition = "$1.cnt > 20" req.AlarmPeriod = 10 client.ModifyAlarm(req) ``` ### Delete (destructive) ```python # Confirm with the user first — there's no undo. req = models.DeleteAlarmRequest() req.AlarmId = "<alarm-id>" client.DeleteAlarm(req) ``` ### Manage notice groups ```python # List req = models.DescribeAlarmNoticesRequest() req.Limit = 100 for n in client.DescribeAlarmNotices(req).AlarmNotices: print(n.AlarmNoticeId, n.Name, n.Type) # Create req = models.CreateAlarmNoticeRequest() req.Name = "Ops on-call" req.Type = "Trigger" # Trigger | Recovery | All req.NoticeReceivers = [{ "ReceiverType": "Uin", "ReceiverIds": [123456], "ReceiverChannels": ["Email", "Sms"], "StartTime": "00:00:00", "EndTime": "23:59:59", }] req.WebCallbacks = [{ "Url": "https://hooks.example.com/cls", "CallbackType": "WeCom", "Method": "POST", }] resp = client.CreateAlarmNotice(req) ``` ### Time-bounded shield (mute during deploy) ```python import time req = models.CreateAlarmShieldRequest() req.AlarmNoticeId = "<notice-id>" req.StartTime = int(time.time()) req.EndTime = int(time.time()) + 7200 # 2 hours req.Type = 1 # 1 = full shield, 2 = partial req.Reason = "Deploy <git-sha>" client.CreateAlarmShield(req) ``` ### Inspect alarm firing history ```python req = models.GetAlarmLogRequest() req.From = int((time.time() - 86400) * 1000) req.To = int(time.time() * 1000) req.Query = 'alarm_name:"OpenAI*"' req.Limit = 100 resp = client.GetAlarmLog(req) for line in resp.Results: print(line.Time, line.LogJson) ``` ## Cloning an alarm The fastest way to create a similar alarm is to read the existing one, strip read-only fields, tweak, and re-create: ```python import json existing = client.DescribeAlarms(models.DescribeAlarmsRequest(Filters=[{"Key": "alarmId", "Values": ["<src-id>"]}])).Alarms[0] payload = json.loads(json.dumps(existing._serialize())) # deep clone for k in ("AlarmId", "CreateTime", "UpdateTime"): payload.pop(k, None) payload["Name"] = "OpenAI 5xx burst v2" # ...edit other fields... req = models.CreateAlarmRequest() req.from_json_string(json.dumps(payload)) print(client.CreateAlarm(req).AlarmId) ``` ## Important reminders - **Always preview the payload** (`json.dumps(req._serialize(), indent=2)`) before `CreateAlarm` / `ModifyAlarm` — schema is strict and errors are unhelpful. - Destructive ops (`DeleteAlarm`, `DeleteAlarmNotice`, `DeleteAlarmShield`) need explicit user confirmation in chat before running. - `Enable` (archived?) vs `Status` (currently on?) are *different* fields. Use `Status` for everyday muting. - Shield rules are scoped to a single `AlarmNoticeId`. Iterate over all notice IDs to list all shields globally. - Default region is `ap-hongkong`; pass another region via `cls_client.ClsClient(cred, "ap-singapore")` if needed. ## Console links - Alarm console: <https://console.cloud.tencent.com/cls/alarm/list> - Alarm API reference: <https://www.tencentcloud.com/document/product/614/56473>
GitHub에서 보기