예제 #1
0
def check_gcp_sql_status(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_sql: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_sql is None:
        return
    if item not in section_gcp_service_cloud_sql:
        return
    metrics = {
        "up":
        gcp.MetricSpec(
            "cloudsql.googleapis.com/database/up",
            "Up:",
            lambda x: str(bool(x)),
            dtype=gcp.MetricSpec.DType.INT,
        ),
    }
    timeseries = section_gcp_service_cloud_sql[item].rows
    yield from gcp.generic_check(metrics, timeseries, {"up": None})

    metric_type = "cloudsql.googleapis.com/database/state"
    if (metric := next(
        (r for r in timeseries if r.ts.metric.type == metric_type),
            None)) is None:
        yield Result(state=State.UNKNOWN, summary="No data available")
        return
예제 #2
0
def check_gcp_sql_network(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_sql: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_sql is None:
        return
    if item not in section_gcp_service_cloud_sql:
        return
    metrics = {
        "net_data_recv":
        gcp.MetricSpec(
            "cloudsql.googleapis.com/database/network/received_bytes_count",
            "In",
            render.networkbandwidth,
        ),
        "net_data_sent":
        gcp.MetricSpec(
            "cloudsql.googleapis.com/database/network/sent_bytes_count",
            "Out",
            render.networkbandwidth,
        ),
    }
    timeseries = section_gcp_service_cloud_sql[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #3
0
def check_gcp_run_requests(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_run: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_run is None:
        return
    metrics = {
        "faas_total_instance_count":
        gcp.MetricSpec("run.googleapis.com/container/instance_count",
                       str,
                       dtype="int"),
        "faas_execution_count":
        gcp.MetricSpec("run.googleapis.com/container/request_count",
                       str,
                       dtype="int"),
        "gcp_billable_time":
        gcp.MetricSpec("run.googleapis.com/container/billable_instance_time",
                       lambda x: f"{x:.2f} s/s"),
        # timespan renderer expects seconds not milliseconds
        "faas_execution_times":
        gcp.MetricSpec("run.googleapis.com/container/request_latencies",
                       render.timespan,
                       scale=1e3),
    }
    timeseries = section_gcp_service_cloud_run.get(
        item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #4
0
def check_gcp_sql_disk(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_sql: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_sql is None:
        return
    if item not in section_gcp_service_cloud_sql:
        return
    metrics = {
        "fs_used_percent": gcp.MetricSpec(
            "cloudsql.googleapis.com/database/disk/utilization",
            lambda x: f"usage: {render.percent(x)}",
            scale=1e2,
        ),
        "disk_write_ios": gcp.MetricSpec(
            "cloudsql.googleapis.com/database/disk/write_ops_count", lambda x: f"write: {x} IOPS"
        ),
        "disk_read_ios": gcp.MetricSpec(
            "cloudsql.googleapis.com/database/disk/read_ops_count", lambda x: f"read: {x} IOPS"
        ),
    }
    timeseries = section_gcp_service_cloud_sql[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #5
0
def check_gcp_function_execution(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_functions: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_functions is None:
        return
    section = section_gcp_service_cloud_functions
    metrics = {
        # TODO: this is the total. Separate by state
        "faas_execution_count":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/execution_count",
            "Executions count", str),
        "aws_lambda_memory_size_absolute":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/user_memory_bytes",
            "Memory", render.bytes),
        # execution times are given in nanoseconds. timespan expects seconds.
        "faas_execution_times":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/execution_times",
            "Execution times",
            render.timespan,
            scale=1e-9,
        ),
    }
    timeseries = section.get(item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #6
0
def check_gcp_function_egress(item: str, params: Mapping[str, Any],
                              section: gcp.Section) -> CheckResult:
    metrics = {
        "net_data_sent":
        gcp.MetricSpec("cloudfunctions.googleapis.com/function/network_egress",
                       render.bytes),
    }
    timeseries = section[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #7
0
def check_gcp_function_instances(item: str, params: Mapping[str, Any],
                                 section: gcp.Section) -> CheckResult:
    metrics = {
        "faas_total_instance_count":
        gcp.MetricSpec("cloudfunctions.googleapis.com/function/instance_count",
                       str),
        "faas_active_instance_count":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/active_instances", str),
    }
    timeseries = section[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #8
0
파일: gcp_run.py 프로젝트: m3rlinux/checkmk
def check_gcp_run_cpu(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_run: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_run is None:
        return
    metrics = {
        "util": gcp.MetricSpec(
            "run.googleapis.com/container/cpu/utilizations", "CPU", render.percent, scale=1e2
        ),
    }
    timeseries = section_gcp_service_cloud_run.get(item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #9
0
def check_gcp_function_network(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_functions: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_functions is None:
        return
    section = section_gcp_service_cloud_functions
    metrics = {
        "net_data_sent":
        gcp.MetricSpec("cloudfunctions.googleapis.com/function/network_egress",
                       "Out", render.networkbandwidth),
    }
    timeseries = section.get(item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #10
0
파일: gcp_run.py 프로젝트: m3rlinux/checkmk
def check_gcp_run_memory(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_run: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_run is None:
        return
    metrics = {
        # percent render expects numbers range 0 to 100 and not fractions.
        "memory_util": gcp.MetricSpec(
            "run.googleapis.com/container/memory/utilizations", "Memory", render.percent, scale=1e2
        ),
    }
    timeseries = section_gcp_service_cloud_run.get(item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #11
0
def check_gcp_sql_cpu(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_sql: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_sql is None:
        return
    if item not in section_gcp_service_cloud_sql:
        return
    metrics = {
        "util": gcp.MetricSpec(
            "cloudsql.googleapis.com/database/cpu/utilization", render.percent, scale=1e2
        ),
    }
    timeseries = section_gcp_service_cloud_sql[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #12
0
def check_gcp_sql_memory(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_sql: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_sql is None:
        return
    if item not in section_gcp_service_cloud_sql:
        return
    metrics = {
        # percent render expects numbers range 0 to 100 and not fractions.
        "memory_util": gcp.MetricSpec(
            "cloudsql.googleapis.com/database/memory/utilization", render.percent, scale=1e2
        ),
    }
    timeseries = section_gcp_service_cloud_sql[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #13
0
def check_gcp_function_instances(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_functions: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_functions is None:
        return
    section = section_gcp_service_cloud_functions
    metrics = {
        "faas_total_instance_count":
        gcp.MetricSpec("cloudfunctions.googleapis.com/function/instance_count",
                       str),
        "faas_active_instance_count":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/active_instances", str),
    }
    timeseries = section.get(item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #14
0
def check_gcp_run_network(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_run: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_run is None:
        return
    metrics = {
        "net_data_recv":
        gcp.MetricSpec(
            "run.googleapis.com/container/network/received_bytes_count",
            render.networkbandwidth),
        "net_data_sent":
        gcp.MetricSpec("run.googleapis.com/container/network/sent_bytes_count",
                       render.networkbandwidth),
    }
    timeseries = section_gcp_service_cloud_run.get(
        item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #15
0
def check_gcp_function_execution(item: str, params: Mapping[str, Any],
                                 section: gcp.Section) -> CheckResult:
    metrics = {
        # TODO: this is the total. Separate by state
        "faas_execution_count":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/execution_count", str),
        "aws_lambda_memory_size_absolute":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/user_memory_bytes",
            render.bytes),
        # execution times are given in nanoseconds. timespan expects seconds.
        "faas_execution_times":
        gcp.MetricSpec(
            "cloudfunctions.googleapis.com/function/execution_times",
            render.timespan,
            scale=1e-9,
        ),
    }
    timeseries = section[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #16
0
def check(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_filestore: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_filestore is None:
        return
    section = section_gcp_service_filestore
    metrics = {
        "fs_used_percent":
        gcp.MetricSpec("file.googleapis.com/nfs/server/used_bytes_percent",
                       render.percent,
                       scale=1e2),
        "disk_read_ios":
        gcp.MetricSpec("file.googleapis.com/nfs/server/read_ops_count", str),
        "disk_write_ios":
        gcp.MetricSpec("file.googleapis.com/nfs/server/write_ops_count", str),
    }
    timeseries = section[item].rows
    yield from gcp.generic_check(metrics, timeseries, params)
예제 #17
0
def check_gcp_run_requests(
    item: str,
    params: Mapping[str, Any],
    section_gcp_service_cloud_run: Optional[gcp.Section],
    section_gcp_assets: Optional[gcp.AssetSection],
) -> CheckResult:
    if section_gcp_service_cloud_run is None:
        return
    metrics = {
        "faas_total_instance_count":
        gcp.MetricSpec(
            "run.googleapis.com/container/instance_count",
            "Instances",
            str,
            dtype=gcp.MetricSpec.DType.INT,
        ),
        "faas_execution_count":
        gcp.MetricSpec(
            "run.googleapis.com/request_count",
            "Requests",
            str,
        ),
        "faas_execution_count_2xx":
        gcp.MetricSpec(
            "run.googleapis.com/request_count",
            "Requests 2xx (sucess)",
            str,
            filter_by=gcp.Filter("response_code_class", "2xx"),
        ),
        "faas_execution_count_3xx":
        gcp.MetricSpec(
            "run.googleapis.com/request_count",
            "Requests 3xx (redirection)",
            str,
            filter_by=gcp.Filter("response_code_class", "3xx"),
        ),
        "faas_execution_count_4xx":
        gcp.MetricSpec(
            "run.googleapis.com/request_count",
            "Requests 4xx (client error)",
            str,
            filter_by=gcp.Filter("response_code_class", "4xx"),
        ),
        "faas_execution_count_5xx":
        gcp.MetricSpec(
            "run.googleapis.com/request_count",
            "Requests 5xx (server error)",
            str,
            filter_by=gcp.Filter("response_code_class", "5xx"),
        ),
        "gcp_billable_time":
        gcp.MetricSpec(
            "run.googleapis.com/container/billable_instance_time",
            "Billable time",
            lambda x: f"{x:.2f} s/s",
        ),
        # timespan renderer expects seconds not milliseconds
        "faas_execution_times":
        gcp.MetricSpec(
            "run.googleapis.com/container/request_latencies",
            "Latencies",
            render.timespan,
            scale=1e3,
        ),
    }
    timeseries = section_gcp_service_cloud_run.get(
        item, gcp.SectionItem(rows=[])).rows
    yield from gcp.generic_check(metrics, timeseries, params)