功能介绍
gSla是一款轻量SLA计算工具,只需要1台主机简单5步操作就能轻松搞定SLA,让你随时掌握线上服务质量。
功能:
1、提供以下SLA指标计算:
- QPS
- ResponseTime(P95/P99/P999/Avg)
- ErrorRate
- 服务可用性
2、可以按服务名、URI进行查询SLA指标。
本工具已在生产环境使用,业务nginx产生的日志数量10亿左右,每秒产生约25000条日志,经过gSla计算之后的数据保存到influxDB,通过grafana轻松展示SLA相关指标如,QPS、ResponseTime、ErrorRate、服务可用性。(gSla主机配置:4核8G SSD云主机,cpu使用率低于10%,内存使用量500M,influxDB存储数据每天<200M)
功能:
1、提供以下SLA指标计算:
- QPS
- ResponseTime(P95/P99/P999/Avg)
- ErrorRate
- 服务可用性
2、可以按服务名、URI进行查询SLA指标。
本工具已在生产环境使用,业务nginx产生的日志数量10亿左右,每秒产生约25000条日志,经过gSla计算之后的数据保存到influxDB,通过grafana轻松展示SLA相关指标如,QPS、ResponseTime、ErrorRate、服务可用性。(gSla主机配置:4核8G SSD云主机,cpu使用率低于10%,内存使用量500M,influxDB存储数据每天<200M)
版本信息
文件名: gSla-v1.0.0.tar.gz
MD5: 80f14ca72825813e6a022470ca7a8175
下载次数:1
MD5: 80f14ca72825813e6a022470ca7a8175
下载次数:1
使用说明
1、架构图
2、配置
1)kafka 配置(kafka安装略)
创建kafka topic:./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic sla-service-log
2)、业务日志收集
将业务日志收集写入到kafka topic,数据格式为json,必须包含project、source、lang、access_time、remote_addr、request_uri、body_bytes_sent、status、upstream_response_time字段。nginx示例:
http { ... log_format test_log_json '{"access_time":"$time_local", ' '"project":"test", ' '"source":"nginx", ' '"lang":"go", ' '"remote_addr":"$remote_addr", ' '"request_uri":"$uri", ' '"referer":"$http_referer", ' '"request":"$request", ' '"status":$status, ' '"body_bytes_sent":$body_bytes_sent, ' '"agent":"$http_user_agent", ' '"x_forwarded":"$http_x_forwarded_for", ' '"up_addr":"$upstream_addr",' '"up_host":"$upstream_http_host",' '"upstream_response_time":"$upstream_response_time",' '"request_time":"$request_time"' '}'; ... } server{ ... access_log logs/test_access.log test_log_json; ... }
通过filebeat收集nginx日志,filebeat配置示例:
filebeat.inputs: - type: log enable: true paths: - /var/log/nginx/test_access.log tail_files: true output.kafka: enabled: true hosts: ["192.168.56.101:9092"] topic: sla-service-log partition.round_robin: reachable_only: true worker: 2 required_acks: 1 compression: gzip max_message_bytes: 10000000 bulk_max_size: 10240 keep_alive: 60 channel_buffer_size: 2560 version: 2.1 codec.format: string: '%{[message]}' logging.level: warning logging.to_files: true logging.files: path: /data/log/filebeat/logs name: filebeat.log keepfiles: 3 permissions: 0644启动fileteat: ./filebeat -e -c filebeat.yml
3)、配置gSla
config.ymllog: level: "info" logFile: "./logs/sla.log" rotationHours: 24 maxAgeHours: 72 sla: tumblingWindow: 15 kafka: addr: "192.168.56.101:9092" version: "2.1.1" topic: "sla-service-log" parallelism: 2 influxdb: url: "http://192.168.56.101:8086" username: "sre" password: "sre" timeoutSec: 15
4)、influxDB配置(influxDB安装略)
influx> CREATE DATABASE "sli" influx> CREATE USER "sre" WITH PASSWORD 'sre' influx> GRANT ALL ON sli TO sre
5)、grafana配置
a)创建influxDB数据源
configure->database->Add data source 选择InfluxDB:HTTP URL:http://192.168.56.101:8086 Access:Server (Default) InfluxDB Details Database:sli User:sre Password:sre HTTP Method:GET
b)导入grafana图形
"+" ->import->Upload .json file
3、性能测试
主机1台:4核8G
每秒可能处理kafka日志:12万条 (估算约50亿PV)