- Logstash
- Logstash - 入门示例
- 入门示例 - 下载安装
- 入门示例 - hello world
- 入门示例 - 配置语法
- 入门示例 - plugin的安装
- 入门示例 - 长期运行
- Logstash - 插件配置
- 插件配置 - input配置
- input配置 - file
- input配置 - stdin
- input配置 - syslog
- input配置 - tcp
- 插件配置 - codec配置
- codec配置 - json
- codec配置 - multiline
- codec配置 - collectd
- codec配置 - netflow
- 插件配置 - filter配置
- filter配置 - date
- filter配置 - grok
- filter配置 - dissect
- filter配置 - geoip
- filter配置 - json
- filter配置 - kv
- filter配置 - metrics
- filter配置 - mutate
- filter配置 - ruby
- filter配置 - split
- filter配置 - elapsed
- 插件配置 - output配置
- output配置 - elasticsearch
- output配置 - email
- output配置 - exec
- output配置 - file
- output配置 - nagios
- output配置 - statsd
- output配置 - stdout
- output配置 - tcp
- output配置 - hdfs
- Logstash - 场景示例
- 场景示例 - nginx访问日志
- 场景示例 - nginx错误日志
- 场景示例 - postfix日志
- 场景示例 - ossec日志
- 场景示例 - windows系统日志
- 场景示例 - Java日志
- 场景示例 - MySQL慢查询日志
- Logstash - 性能与测试
- 性能与测试 - generator方式
- 性能与测试 - 监控方案
- 监控方案 - logstash-input-heartbeat方式
- 监控方案 - jmx启动参数方式
- 监控方案 - API方式
- Logstash - 扩展方案
- 扩展方案 - 通过redis传输
- 扩展方案 - 通过kafka传输
- 扩展方案 - AIX 平台上的logstash-forwarder-java
- 扩展方案 - rsyslog
- 扩展方案 - nxlog
- 扩展方案 - heka
- 扩展方案 - fluent
- 扩展方案 - Message::Passing
- Logstash - 源码解析
- 源码解析 - pipeline流程
- 源码解析 - Event的生成
- Logstash - 插件开发
- 插件开发 - utmp插件示例
- Beats
- Beats - filebeat
- Beats - packetbeat网络流量分析
- Beats - metricbeat
- Beats - winlogbeat
- ElasticSearch
- ElasticSearch - 架构原理
- 架构原理 - segment、buffer和translog对实时性的影响
- 架构原理 - segment merge对写入性能的影响
- 架构原理 - routing和replica的读写过程
- 架构原理 - shard的allocate控制
- 架构原理 - 自动发现的配置
- ElasticSearch - 接口使用示例
- 接口使用示例 - 增删改查操作
- 接口使用示例 - 搜索请求
- 接口使用示例 - Painless脚本
- 接口使用示例 - reindex接口
- ElasticSearch - 性能优化
- 性能优化 - bulk提交
- 性能优化 - gateway配置
- 性能优化 - 集群状态维护
- 性能优化 - 缓存
- 性能优化 - fielddata
- 性能优化 - curator工具
- 性能优化 - profile接口
- ElasticSearch - rally测试方案
- ElasticSearch - 多集群互联
- ElasticSearch - 别名的应用
- ElasticSearch - 映射与模板的定制
- ElasticSearch - puppet-elasticsearch模块的使用
- ElasticSearch - 计划内停机升级的操作流程
- ElasticSearch - 镜像备份
- ElasticSearch - rollover和shrink
- ElasticSearch - Ingest节点
- ElasticSearch - Hadoop 集成
- Hadoop 集成 - spark streaming交互
- ElasticSearch - 权限管理
- 权限管理 - Shield
- 权限管理 - Search-Guard 在 Elasticsearch 2.x 上的运用
- ElasticSearch - 监控方案
- 监控方案 - 监控相关接口
- 监控相关接口 - 集群健康状态
- 监控相关接口 - 节点状态
- 监控相关接口 - 索引状态
- 监控相关接口 - 任务管理
- 监控相关接口 - cat 接口的命令行使用
- 监控方案 - 日志记录
- 监控方案 - 实时bigdesk方案
- 监控方案 - cerebro
- 监控方案 - zabbix trapper方案
- ElasticSearch - ES在运维监控领域的其他玩法
- ES在运维监控领域的其他玩法 - percolator接口
- ES在运维监控领域的其他玩法 - watcher报警
- ES在运维监控领域的其他玩法 - ElastAlert
- ES在运维监控领域的其他玩法 - 时序数据库
- ES在运维监控领域的其他玩法 - Grafana
- ES在运维监控领域的其他玩法 - juttle
- ES在运维监控领域的其他玩法 - Etsy的Kale异常检测
- Kibana 5
- Kibana 5 - 安装、配置和运行
- Kibana 5 - 生产环境部署
- Kibana 5 - discover功能
- Kibana 5 - 各visualize功能
- 各visualize功能 - area
- 各visualize功能 - table
- 各visualize功能 - line
- 各visualize功能 - markdown
- 各visualize功能 - metric
- 各visualize功能 - pie
- 各visualize功能 - tile map
- 各visualize功能 - vertical bar
- Kibana 5 - dashboard功能
- Kibana 5 - timelion 介绍
- Kibana 5 - console 介绍
- Kibana 5 - setting功能
- Kibana 5 - 常用sub agg示例
- 常用sub agg示例 - 函数堆栈链分析
- 常用sub agg示例 - 分图统计
- 常用sub agg示例 - TopN的时序趋势图
- 常用sub agg示例 - 响应时间的百分占比趋势图
- 常用sub agg示例 - 响应时间的概率分布在不同时段的相似度对比
- Kibana 5 - 源码解析
- 源码解析 - .kibana索引的数据结构
- 源码解析 - 主页入口
- 源码解析 - discover解析
- 源码解析 - visualize解析
- 源码解析 - dashboard解析
- Kibana 5 - 插件
- 插件 - 可视化开发示例
- 插件 - 后端开发示例
- 插件 - 完整app开发示例
- Kibana 5 - Kibana报表
- 竞品对比
Beats - metricbeat
使用 beat 监控服务性能指标是 ElasticStack 一个常见的使用场景。2.x 时代要求用户对每类常见都需要单独开发自己的 xxxbeat 工具,然后各自编译使用。于是 Elastic.co 公司最终干脆把这件事情统一成了 metricbeat。
目前 metricbeat 支持以下服务性能指标:
- Apache
- HAProxy
- MongoDB
- MySQL
- Nginx
- PostgreSQL
- Redis
- System
- Zookeeper
配置示例
metricbeat.modules: - module: system metricsets: - cpu - filesystem - memory - network - process enabled: true period: 10s processes: ['.*'] cpu_ticks: false - module: apache metricsets: ["status"] enabled: true period: 1s hosts: ["http://127.0.0.1"]
Apache
Apache 模块支持 2.2.31 以上的 2.2 系列,或 2.4.16 以上的 2.4 系列版本。
使用该模块要求被监控的 Apache 服务器上安装配置有 mod_status
扩展。通过该扩展可以监控到的 status 数据示例如下:
"apache": { "status": { "bytes_per_request": 1024, "bytes_per_sec": 0.201113, "connections": { "async": { "closing": 0, "keep_alive": 0, "writing": 0 }, "total": 0 }, "cpu": { "children_system": 0, "children_user": 0, "load": 0.00652482, "system": 1.46, "user": 1.53 }, "hostname": "apache", "load": { "1": 0.55, "15": 0.31, "5": 0.31 }, "requests_per_sec": 0.000196399, "scoreboard": { "closing_connection": 0, "dns_lookup": 0, "gracefully_finishing": 0, "idle_cleanup": 0, "keepalive": 0, "logging": 0, "open_slot": 325, "reading_request": 0, "sending_reply": 1, "starting_up": 0, "total": 400, "waiting_for_connection": 74 }, "total_accesses": 9, "total_kbytes": 9, "uptime": { "server_uptime": 45825, "uptime": 45825 }, "workers": { "busy": 1, "idle": 74 } } }
模块携带有一个预一定好的仪表盘,效果如下:
HAProxy
HAProxy 模块支持 HAProxy 服务器 1.6 版本。
使用该模块要求在 HAProxy 服务器配置的 global
或 default
区域写有如下配置:
stats socket 127.0.0.1:14567
模块可以采集两类信息:info 和 stat。
其中 info 的返回数据示例如下:
"haproxy": { "info": { "compress_bps_in": 0, "compress_bps_out": 0, "compress_bps_rate_limit": 0, "conn_rate": 0, "conn_rate_limit": 0, "cum_conns": 67, "cum_req": 67, "cum_ssl_conns": 0, "curr_conns": 0, "curr_ssl_conns": 0, "hard_max_conn": 4000, "idle_pct": 100, "max_conn": 4000, "max_conn_rate": 5, "max_pipes": 0, "max_sess_rate": 5, "max_sock": 8033, "max_ssl_conns": 0, "max_ssl_rate": 0, "max_zlib_mem_usage": 0, "mem_max_mb": 0, "nb_proc": 1, "pid": 53858, "pipes_free": 0, "pipes_used": 0, "process_num": 1, "run_queue": 2, "sess_rate": 0, "sess_rate_limit": 0, "ssl_babckend_key_rate": 0, "ssl_backend_max_key_rate": 0, "ssl_cache_misses": 0, "ssl_cached_lookups": 0, "ssl_frontend_key_rate": 0, "ssl_frontend_max_key_rate": 0, "ssl_frontend_session_reuse_pct": 0, "ssl_rate": 0, "ssl_rate_limit": 0, "tasks": 7, "ulimit_n": 8033, "uptime_sec": 13700, "zlib_mem_usage": 0 } },
stat 的返回数据示例如下:
"haproxy": { "stat": { "act": 1, "bck": 0, "bin": 0, "bout": 0, "check_duration": 0, "check_status": "L4CON", "chkdown": 1, "chkfail": 1, "cli_abrt": 0, "ctime": 0, "downtime": 13700, "dresp": 0, "econ": 0, "eresp": 0, "hanafail": 0, "hrsp_1xx": 0, "hrsp_2xx": 0, "hrsp_3xx": 0, "hrsp_4xx": 0, "hrsp_5xx": 0, "hrsp_other": 0, "iid": 3, "last_chk": "Connection refused", "lastchg": 13700, "lastsess": -1, "lbtot": 0, "pid": 1, "qcur": 0, "qmax": 0, "qtime": 0, "rate": 0, "rate_max": 0, "rtime": 0, "scur": 0, "sid": 1, "smax": 0, "srv_abrt": 0, "status": "DOWN", "stot": 0, "svname": "log1", "ttime": 0, "weight": 1, "wredis": 0, "wretr": 0 } }
对这些 stat 数据名称有疑惑的,可以查阅 http://www.haproxy.org/download/1.6/doc/management.txt 文档。
MongoDB
该模块支持 MongoDB 2.8 及以上版本。
"mongodb": { "status": { "asserts": { "msg": 0, "regular": 0, "rollovers": 0, "user": 0, "warning": 0 }, "background_flushing": { "average": { "ms": 16 }, "flushes": 37, "last": { "ms": 18 }, "last_finished": "2016-09-06T07:32:58.228Z", "total": { "ms": 624 } }, "connections": { "available": 838859, "current": 1, "total_created": 10 }, "extra_info": { "heap_usage": { "bytes": 62895448 }, "page_faults": 71 }, "journaling": { "commits": 1, "commits_in_write_lock": 0, "compression": 0, "early_commits": 0, "journaled": { "mb": 0 }, "times": { "commits": { "ms": 0 }, "commits_in_write_lock": { "ms": 0 }, "dt": { "ms": 0 }, "prep_log_buffer": { "ms": 0 }, "remap_private_view": { "ms": 0 }, "write_to_data_files": { "ms": 0 }, "write_to_journal": { "ms": 0 } }, "write_to_data_files": { "mb": 0 } }, "local_time": "2016-09-06T07:33:15.546Z", "memory": { "bits": 64, "mapped": { "mb": 80 }, "mapped_with_journal": { "mb": 160 }, "resident": { "mb": 57 }, "virtual": { "mb": 356 } }, "network": { "in": { "bytes": 2258 }, "out": { "bytes": 93486 }, "requests": 39 }, "opcounters": { "command": 40, "delete": 0, "getmore": 0, "insert": 0, "query": 1, "update": 0 }, "opcounters_replicated": { "command": 0, "delete": 0, "getmore": 0, "insert": 0, "query": 0, "update": 0 }, "storage_engine": { "name": "mmapv1" }, "uptime": { "ms": 45828938 }, "version": "3.0.12", "write_backs_queued": false } }
MySQL
该模块支持 MySQL 5.7.0 及以上版本。
"mysql": { "status": { "aborted": { "clients": 13, "connects": 16 }, "binlog": { "cache": { "disk_use": 0, "use": 0 } }, "bytes": { "received": 2100, "sent": 92281 }, "connections": 33, "created": { "tmp": { "disk_tables": 0, "files": 6, "tables": 0 } }, "delayed": { "errors": 0, "insert_threads": 0, "writes": 0 }, "flush_commands": 1, "max_used_connections": 2, "open": { "files": 14, "streams": 0, "tables": 106 }, "opened_tables": 113 } }
Nginx
该模块支持 Nginx 1.9 及以上版本。并要求安装有 mod_stub_status
模块。
"nginx": { "stubstatus": { "accepts": 22, "active": 1, "current": 10, "dropped": 0, "handled": 22, "hostname": "nginx", "reading": 0, "requests": 10, "waiting": 0, "writing": 1 } }
PostgreSQL
该模块支持 PostgreSQL 9 及以上版本。可以采集 activity,bgwriter 和 database 三类数据。
activity 示例数据如下:
"postgresql": { "activity": { "application_name": "", "backend_start": "2016-09-06T07:33:18.323Z", "client": { "address": "172.17.0.14", "hostname": "", "port": 57436 }, "database": { "name": "postgres", "oid": 12379 }, "pid": 162, "query": "SELECT * FROM pg_stat_activity", "query_start": "2016-09-06T07:33:18.325Z", "state": "active", "state_change": "2016-09-06T07:33:18.325Z", "transaction_start": "2016-09-06T07:33:18.325Z", "user": { "id": 10, "name": "postgres" }, "waiting": false },
bgwriter 示例数据如下:
"bgwriter": { "buffers": { "allocated": 191, "backend": 0, "backend_fsync": 0, "checkpoints": 0, "clean": 0, "clean_full": 0 }, "checkpoints": { "requested": 0, "scheduled": 7, "times": { "sync": { "ms": 0 }, "write": { "ms": 0 } } }, "stats_reset": "2016-09-05T18:49:53.575Z" },
database 示例数据如下:
"database": { "blocks": { "hit": 0, "read": 0, "time": { "read": { "ms": 0 }, "write": { "ms": 0 } } }, "conflicts": 0, "deadlocks": 0, "name": "template1", "number_of_backends": 0, "oid": 1, "rows": { "deleted": 0, "fetched": 0, "inserted": 0, "returned": 0, "updated": 0 }, "temporary": { "bytes": 0, "files": 0 }, "transactions": { "commit": 0, "rollback": 0 } }
Redis
该模块支持 Redis 3 及以上版本。可以采集 info 和 keyspace 两类数据。
info 示例数据如下:
"redis": { "info": { "clients": { "biggest_input_buf": 0, "blocked": 0, "connected": 2, "longest_output_list": 0 }, "cluster": { "enabled": false }, "cpu": { "used": { "sys": 0.33, "sys_children": 0, "user": 0.39, "user_children": 0 } }, "memory": { "allocator": "jemalloc-4.0.3", "used": { "lua": 37888, "peak": 883992, "rss": 4030464, "value": 883032 } }, "persistence": { "aof": { "bgrewrite": { "last_status": "ok" }, "enabled": false, "rewrite": { "current_time": { "sec": -1 }, "in_progress": false, "last_time": { "sec": -1 }, "scheduled": false }, "write": { "last_status": "ok" } }, "loading": false, "rdb": { "bgsave": { "current_time": { "sec": -1 }, "in_progress": false, "last_status": "ok", "last_time": { "sec": -1 } }, "last_save": { "changes_since": 2, "time": 1475698251 } } }, "replication": { "backlog": { "active": 0, "first_byte_offset": 0, "histlen": 0, "size": 1048576 }, "connected_slaves": 0, "master_offset": 0, "role": "master" }, "server": { "arch_bits": "64", "build_id": "5575d747b4b3b12c", "config_file": "", "gcc_version": "4.9.2", "git_dirty": "0", "git_sha1": "00000000", "hz": 10, "lru_clock": 16080842, "mode": "standalone", "multiplexing_api": "epoll", "os": "Linux 4.4.22-moby x86_64", "process_id": 1, "run_id": "d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6", "tcp_port": 6379, "uptime": 383, "version": "3.2.4" }, "stats": { "commands_processed": 70, "connections": { "received": 17, "rejected": 0 }, "instantaneous": { "input_kbps": 0.07, "ops_per_sec": 2, "output_kbps": 0.07 }, "keys": { "evicted": 0, "expired": 0 }, "keyspace": { "hits": 0, "misses": 0 }, "latest_fork_usec": 0, "migrate_cached_sockets": 0, "net": { "input": { "bytes": 1949 }, "output": { "bytes": 4956554 } }, "pubsub": { "channels": 0, "patterns": 0 }, "sync": { "full": 0, "partial": { "err": 0, "ok": 0 } } } },
keyspace 示例数据如下:
"keyspace": { "avg_ttl": 0, "expires": 0, "id": "db0", "keys": 1 } }
System
System 就是过去的 TopBeat,可以采集 core、cpu、diskio、filesystem、fsstat、load、memory、network 和 process 指标。这都是运维人员最熟悉的部分,就不再单独贴指标名称和示例了。
模块自带有一个预定义仪表盘,示例如下:
Zookeeper
该模块支持 Zookeeper 3.4.0 及以上版本。采集的 mntr 数据示例如下:
"zookeeper": { "mntr": { "approximate_data_size": 27, "ephemerals_count": 0, "latency": { "avg": 0, "max": 0, "min": 0 }, "num_alive_connections": 1, "outstanding_requests": 0, "packets": { "received": 10, "sent": 9 }, "server_state": "standalone", "version": "3.4.8--1, built on 02/06/2016 03:18 GMT", "watch_count": 0, "znode_count": 4 } }
docker 中的采集方式
metricbeat 的 system 数据大多采集自 /proc。而 docker 中,每个容器的实际数据是放在 /hostfs 而不是 /proc 里的。所以如果要用 metricbeat 采集容器数据,需要先挂载好对应路径:
$ sudo docker run --volume=/proc:/hostfs/proc:ro --volume=/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro --volume=/:/hostfs:ro --net=host my/metricbeat:latest -system.hostfs=/hostfs
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论