(Translated by https://www.hiragana.jp/)
GitHub - JThink/SkyEye: 对java、scala等运行于jvm的程序进行实时日志采集、索引和可视化,对系统进行进程级别的监控,对系统内部的操作进行策略性的报警、对分布式的rpc调用进行trace跟踪以便于进行性能分析
Skip to content
/ SkyEye Public

对java、scalaとう运行于jvmてきほどじょ进行实时こころざしさいしゅう索引さくいん视化,对系统进ぎょう进程级别てき监控,对系统内部ないぶてき操作そうさ进行策略さくりゃくせいてき报警、对分布ぶんぷしきてきrpc调用进行trace跟踪以便于进ぎょう性能せいのう分析ぶんせき

License

Notifications You must be signed in to change notification settings

JThink/SkyEye

Repository files navigation

SkyEye

对java、scalaとう运行于jvmてきほどじょ进行实时こころざしさいしゅう索引さくいん视化,对系统进ぎょう进程级别てき监控,对系统内部ないぶてき操作そうさ进行策略さくりゃくせいてき报警、对分布ぶんぷしきてきrpc调用进行trace跟踪以便于进ぎょう性能せいのう分析ぶんせき

交流こうりゅう方式ほうしき

  1. QQぐん: 624054633
  2. Email: leviqian@sina.com
  3. blog: blog

  • APP: せっにゅうskyeye-clientてきけい统会どおり过kafkaAppenderこうkafkaうつし入日いりひこころざし
  • es-indexer-group: kafkaてきesしょう费组,读取kafkaてきすうすえ并批りょうbulkいたes
  • monitor-group: kafkaてき监控しょう费组,app在日ざいにちこころざしちゅう进行かく种eventうめてん(如:だいさんぽう异常报警、请求耗时异常报警とう
  • business-group: kafkaてき业务しょう费组
  • trace-group: つう过日こころざし进行rpc调用trace跟踪(dapper论文)
  • es: にちこころざしそん储db,并建立こんりゅうしょう索引さくいん
  • zookeeper: appちゅうさつ中心ちゅうしん
  • monitor: 监控中心ちゅうしん,监听zookeeperちゅうさつちゅう心中しんちゅうのしょう应的节点变化进行监控报警
  • rabbitmq: 监控报警缓冲队列
  • alert: 具体ぐたい报警手段しゅだん包括ほうかつ邮件ほろしん

项目かい

对java、scalaとう运行于jvmてきほどじょ进行实时こころざしさいしゅう索引さくいん视化,对系统进ぎょう进程级别てき监控,对系统内部ないぶてき操作そうさ进行策略さくりゃくせいてき报警、对分布ぶんぷしきてきrpc调用进行trace跟踪以便于进ぎょう性能せいのう分析ぶんせき

  • にちこころざし实时さいしゅう支持しじlog4j、logbacklog4j2)
  • にちこころざし实时页面实时展示てんじ支持しじ关键过滤)
  • 历史こころざし查询(支持しじ条件じょうけん过滤,支持しじsql语句查询)
  • app实时部署ぶしょ位置いち展示てんじつくえ和文わぶんけん夹)
  • app实时こころざしさいしゅうじょう展示てんじ
  • app历史部署ぶしょ位置いち展示てんじ
  • api请求实时统计历史统计
  • だい三方请求实时统计和历史统计
  • もと于dubboxてきrpc调用すうすえ收集しゅうしゅう调用链展示てんじ支持しじ条件じょうけん检索)
  • けい上下じょうげ线报警
  • けい统内はまさいしゅう报警
  • ちゅう间件、api、だいさんぽう、job执行异常报警(策略さくりゃく报警异常报警)

部署ぶしょ

おさむあらため录gradleぶんけんちゅうてき私服しふく(这样才能さいのうつつみdeployいた自己じこてき本地ほんじ私服しふくつつみ:gradle clean install upload -x test

容器ようき部署ぶしょ

需要じゅよう自己じこおさむあらためごと个项目下めしたてきimageてきDockerfileぶんけん

PS: rancherいち键部しょskyeyeきさき教程きょうてい基本きほん符合ふごう续交づけてき场景。

sudo bash build.sh 1.3.0 master

skyeye-base

ほん项目ぼつゆう具体ぐたいてき业务逻辑,主要しゅようかく个模块通用つうようてき类定义,如:つねりょう、dto、dapperしょう关、公用こうようutil,所以ゆえん该项无需部署ぶしょただ需要じゅようつつみ

skyeye-client

ほん项目主要しゅよう提供ていきょう给对せってき项目使用しよう包含ほうがんりょうlog4jlogbackてきてい义appender项目ちゅうさつしょう关,所以ゆえん该项无需部署ぶしょただ需要じゅようつつみ提供ていきょう给对せっかた对接。

skyeye-data

ほん项目主要しゅようようらい提供ていきょうすうすえ操作そうさしょう关的ちゅう间件,具体ぐたいぶん为以5个子modoule。ほん项目无需部署ぶしょただ需要じゅようつつみ

skyeye-data-dubbox

该项主要しゅようてい义的spring-bootてきdubbox starter,为spring-bootしょう关的项目使用しようdubbox提供ていきょう简易てき方式ほうしき集成しゅうせいspring-bootてきauto configuration,见我てき另一个开げん项目:spring-boot-starter-dubbox

skyeye-data-hbase

该项主要しゅようてい义的spring-bootてきhbase starter,为hbaseてきquery更新こうしんとう操作そうさ提供ていきょう简易てきapi并集成しゅうせいspring-bootてきauto configuration,见我てき另一个开げん项目:spring-boot-starter-hbase

skyeye-data-httpl

该项主要しゅよう使用しよう连接简单ふうそうりょうhttpてき请求,如果项目ちゅう使用しようてきspring版本はんぽん较高使用しようRestTemplate代替だいたい

skyeye-data-jpa

该项主要しゅようjpaしょう关的てい义,包含ほうがんdomain、repository、dtoしょう关的てい义,主要しゅようようらい操作そうさmysqlてき查询。

skyeye-data-rabbitmq

该项主要しゅようふうそうりょう报警块中そんrabbitmqちゅう消息しょうそくてきしょう关代码。

skyeye-trace

该项ふうそうりょう所有しょゆうrpc traceしょう关的だい码,包含ほうがんrpcすうすえさいしゅう分布ぶんぷしき唯一ゆいいつID生成せいせい分布ぶんぷしき递增ID生成せいせいちゅうさつ中心ちゅうしんさい样器、跟踪とうこうのう,该项无需部署ぶしょただ需要じゅようつつみ

dubbox

よし使用しようdubbox,为了のう够采しゅういたdubboxさとめんてきrpcすうすえ需要じゅようおさむあらためdubboxてきげん码,见我おさむあらためてきdubbox项目:dubbox,该项主要しゅよう实现りょうrpc跟踪てき具体ぐたい实现,需要じゅよう单独つつみ

git clone https://github.com/JThink/dubbox.git
cd dubbox
git checkout skyeye-trace-1.3.0
おさむあらためしょう关pomちゅうてき私服しふく
mvn clean install deploy -Dmaven.test.skip=true

软件あんそう

如果软件版本はんぽん以下いかしょれつ不一致ふいっち需要じゅようおさむあらためgradleちゅうてき版本はんぽん,并且需自ぎょう测试可用性かようせい(hadoop、hbase、sparkとうしょう应的版本はんぽん自己じこらい指定していだい码层めん无需おさむあらため需要じゅようおさむあらため赖)。

软件めい 版本はんぽん 备注
mysql 5.5+
elasticsearch 2.3.3 测试5.x版本はんぽん(开发てき时候最新さいしん版本はんぽんただゆう2.3.x),需要じゅようかり设sql引擎,见: elasticsearch-sql需要じゅようあんそうIKぶん词并启动,见: es ikぶん
kafka 0.10.0.1 如果sparkてき版本はんぽん较低,需要じゅようはたkafkaてきこころざしてき格式かくしきくだてい具体ぐたいざいkafkaてき配置はいち加入かにゅう:log.message.format.version=0.8.2,该项按需配置はいち
jdk 1.7+
zookeeper 3.4.6
rabbitmq 3.5.7
hbase 1.0.0-cdh5.4.0 支持しじ1.x以下いかてき版本はんぽん如0.9x.x
gradle 3.0+
hadoop 2.6.0-cdh5.4.0
spark 1.3.0-cdh5.4.0
redis 3.x 单机ばんそく

はつはじめ

mysql

mysql -uroot -p
source skyeye-data/skyeye-data-jpa/src/main/resources/sql/init.sql

hbase

创建さん张表,ようらい保存ほぞんrpcてきすうすえいち张数すえひょう,两张索引さくいんひょう

hbase shell
执行skyeye-collector/skyeye-collector-trace/src/main/resources/shell/hbase这个ぶんけんさとめんてき内容ないよう

elasticsearch

くび先安さきやすそうしょう应的es pythonてきmodule,しかきさきさい创建索引さくいんすえ需要じゅようおさむあらためesてきてきip、はしこう

cd skyeye-collector/skyeye-collector-indexer/src/main/resources/shell
./install.sh
bash start.sh app-log http://192.168.xx.xx:9200,http://192.168.xx.xx:9200,......
cd skyeye-collector/skyeye-collector-metrics/src/main/resources/shell
bash start.sh event-log http://192.168.xx.xx:9200,http://192.168.xx.xx:9200,......

注意ちゅういてん:如果es版本はんぽん为5.x,么需ようおさむあらためskyeye-collector/src/main/resources/shell/es/app-log/create-index.pyてき4950ぎょう为下めん内容ないよう'messageSmart': { 'type': 'text', 'analyzer': 'ik_smart', 'search_analyzer': 'ik_smart', 'include_in_all': 'true', 'boost': 8},
'messageMax': { 'type': 'text', 'analyzer': 'ik_max_word', 'search_analyzer': 'ik_max_word', 'include_in_all': 'true', 'boost': 8}

kafka

创建しょう应的topic,すえ需要じゅようおさむあらため—partitionszkてきip、はしこうてき值,如果こころざしりょうとく别大以适とうひさげだか这个值

kafka-topics.sh --create --zookeeper 192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181/kafka/0.10.0.1 --replication-factor 3 --partitions 9 --topic app-log

zookeeper

はつはじめちゅうさつ中心ちゅうしんてき节点しんいき

./zkCli.sh
执行skyeye-monitor/src/main/resources/shell/zk这个ぶんけんさとめんてき内容ないよう

rabbitmq

あい关项启动てき时候かい动创けんしょう关的队列

skyeye-alarm

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけん

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/alarm
vim alarm.properties

# log_mailer request queue
rabbit.request.addresses=localhost:5672
rabbit.request.username=jthink
rabbit.request.password=jthink
rabbit.request.vhost=/dev
rabbit.request.channelCacheSize=50
rabbit.request.queue=log_mailer
rabbit.request.exchange=direct.log
rabbit.request.routingKey=log.key

# mail
mail.jthink.smtphost=smtp.xxx.com
mail.jthink.port=25
mail.jthink.from=xxx@xxx.com
mail.jthink.cc=xxx@xxx.com
mail.jthink.password=jthink_0926

需要じゅようおさむあらためrabbitmq邮件しょう关的配置はいち

つつみ部署ぶしょ

cd skyeye-alarm
gradle clean distZip -x test
cd target/distributions
unzip skyeye-alarm-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-alarm-x.x.x
nohup bin/skyeye-alarm &

skyeye-collector

ほん项目从v1.0.0版本はんぽん开始按不同ふどうてきkafkaしょう费group组织module以实现可插拔てきこうのう块,主要しゅよう包含ほうがん如下5个module:

  • skyeye-collector-core: 收集しゅうしゅう目的もくてき所有しょゆう公用こうようてき配置はいち公用こうようだい码,あらためmodule需要じゅよう部署ぶしょ
  • skyeye-collector-backup: 对采しゅうてき所有しょゆうこころざし进行备份
  • skyeye-collector-indexer: 对采しゅうてき所有しょゆうこころざし进行索引さくいんそんいれes
  • kyeye-collector-metrics: 对事件じけんこころざし进行meta dataてきさいしゅうしょう关报警metrics进行索引さくいんそんいれes
  • skyeye-collector-trace: 对rpc跟踪すうすえ进行さいしゅうにゅうhbase

つつみ

cd skyeye-collector
gradle clean build -x test

skyeye-collector-backup

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけんすえ对接けい统的个数产生こころざしてきりょう进行部署ぶしょさいこう部署ぶしょ3个节てんまい个节てんしょう费3个partitionてきすうすえ

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/collector
vim collector-backup.properties

# kafka config
kafka.brokers=riot01:9092,riot02:9092,riot03:9092
kafka.topic=app-log
kafka.consume.group=log-backup-consume-group
kafka.poll.timeout=100

# hdfs
hadoop.hdfs.namenode.port=8020
hadoop.hdfs.namenode.host=192.168.88.131
hadoop.hdfs.user=xxx
hadoop.hdfs.baseDir=/user/xxx/JThink/
hadoop.hdfs.fileRoot=/tmp/monitor-center/
upload.log.cron=0 30 0 * * ?

部署ぶしょ

个节てん部署ぶしょ需要じゅよう部署ぶしょつぎ

cd skyeye-collector-backup/target/distributions
unzip skyeye-collector-backup-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-collector-backup-x.x.x
nohup bin/skyeye-collector-backup &

skyeye-collector-indexer

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけんすえ对接けい统的个数产生こころざしてきりょう进行部署ぶしょさいこう部署ぶしょ3个节てんまい个节てんしょう费3个partitionてきすうすえ

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/collector
vim collector-indexer.properties

# kafka config
kafka.brokers=riot01:9092,riot02:9092,riot03:9092
kafka.topic=app-log
kafka.consume.group=es-indexer-consume-group
kafka.poll.timeout=100

# es config
es.ips=riot01,riot02,riot03
es.cluster=mondeo
es.port=9300
es.sniff=true
es.index=app-log
es.doc=log

部署ぶしょ

个节てん部署ぶしょ需要じゅよう部署ぶしょつぎ

cd skyeye-collector-indexer/target/distributions
unzip skyeye-collector-indexer-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-collector-indexer-x.x.x
nohup bin/skyeye-collector-indexer &

skyeye-collector-metrics

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけんすえ对接けい统的个数产生こころざしてきりょう进行部署ぶしょさいこう部署ぶしょ3个节てんまい个节てんしょう费3个partitionてきすうすえ

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/collector
vim collector-metrics.properties

# kafka config
kafka.brokers=riot01:9092,riot02:9092,riot03:9092
kafka.topic=app-log
kafka.consume.group=info-collect-consume-group
kafka.poll.timeout=100

# es config
es.ips=riot01,riot02,riot03
es.cluster=mondeo
es.port=9300
es.sniff=true
es.index=event-log
es.doc=log

# redis config
redis.host=localhost
redis.port=6379
redis.password=

# mysql config
database.address=localhost:3306
database.name=monitor-center
database.username=root
database.password=root

# log_mailer request queue
rabbit.request.addresses=localhost:5672
rabbit.request.username=jthink
rabbit.request.password=jthink
rabbit.request.vhost=/dev
rabbit.request.channelCacheSize=50
rabbit.request.queue=log_mailer
rabbit.request.exchange=direct.log
rabbit.request.routingKey=log.key

# zk
zookeeper.zkServers=riot01:2181,riot02:2181,riot03:2181
zookeeper.sessionTimeout=60000
zookeeper.connectionTimeout=5000

部署ぶしょ

个节てん部署ぶしょ需要じゅよう部署ぶしょつぎ

cd skyeye-collector-metrics/target/distributions
unzip skyeye-collector-metrics-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-collector-metrics-x.x.x
nohup bin/skyeye-collector-metrics &

skyeye-collector-trace

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけんすえ对接けい统的个数产生こころざしてきりょう进行部署ぶしょさいこう部署ぶしょ3个节てんまい个节てんしょう费3个partitionてきすうすえ

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/collector
vim collector-trace.properties

# kafka config
kafka.brokers=riot01:9092,riot02:9092,riot03:9092
kafka.topic=app-log
kafka.consume.group=rpc-trace-consume-group
kafka.poll.timeout=100

# redis config
redis.host=localhost
redis.port=6379
redis.password=

# mysql config
database.address=localhost:3306
database.name=monitor-center
database.username=root
database.password=root

# hbase config
hbase.quorum=panda-01,panda-01,panda-03
hbase.rootDir=hdfs://panda-01:8020/hbase
hbase.zookeeper.znode.parent=/hbase

部署ぶしょ

个节てん部署ぶしょ需要じゅよう部署ぶしょつぎ

cd skyeye-collector-trace/target/distributions
unzip skyeye-collectortracemetrics-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-collector-trace-x.x.x
nohup bin/skyeye-collector-trace &

skyeye-monitor

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけん

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/monitor
vim monitor.properties

# zk
zookeeper.zkServers=riot01:2181,riot02:2181,riot03:2181
zookeeper.sessionTimeout=60000
zookeeper.connectionTimeout=5000
zookeeper.baseSleepTimeMs=1000
zookeeper.maxRetries=3

# log_mailer request queue
rabbit.request.addresses=localhost:5672
rabbit.request.username=jthink
rabbit.request.password=jthink
rabbit.request.vhost=/dev
rabbit.request.channelCacheSize=50
rabbit.request.queue=log_mailer
rabbit.request.exchange=direct.log
rabbit.request.routingKey=log.key

# mysql config
database.address=localhost:3306
database.name=monitor-center
database.username=root
database.password=root

需要じゅようおさむあらためしょう关的配置はいち(rabbitmqてき配置はいち需和alarm一致いっち,zk也需要じゅようぜんきさき一致いっち

つつみ部署ぶしょ

cd skyeye-monitor
gradle clean distZip -x test
cd target/distributions
unzip skyeye-monitor-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-monitor-x.x.x
nohup bin/skyeye-monitor &

skyeye-web

配置はいちぶんけん

配置はいちぶんけん外部がいぶ需要じゅようざいつくえじょう创建配置はいちぶんけん

ssh いた部署ぶしょ节点
mkdir -p /opt/jthink/jthink-config/skyeye/web
vim web.properties

# server
serverAddress=0.0.0.0
serverPort=8090

# mysql config
database.address=localhost:3306
database.name=monitor-center
database.username=root
database.password=root

# es sql url
es.sql.url=http://riot01:9200/_sql?sql=
es.sql.sql=select * from app-log/log
es.query.delay=10
es.sql.index.event=event-log/log

# log_mailer request queue
rabbit.request.addresses=localhost:5672
rabbit.request.username=jthink
rabbit.request.password=jthink
rabbit.request.vhost=/dev
rabbit.request.channelCacheSize=50
rabbit.request.queue=log_mailer
rabbit.request.exchange=direct.log
rabbit.request.routingKey=log.key

# monitor
monitor.es.interval=0 */1 * * * ?					# 监控だい码执ぎょうてき周期しゅうきけん议不おさむあらため
monitor.es.mail=leviqian@sina.com

# hbase config
hbase.quorum=panda-01,panda-01,panda-03
hbase.rootDir=hdfs://panda-01:8020/hbase
hbase.zookeeper.znode.parent=/hbase

需要じゅようおさむあらためしょう关的配置はいち(rabbitmqてき配置はいち需和alarm一致いっち,es也需要じゅようぜんきさき一致いっち),ちゅう释过てき要注意ようちゅういてき

つつみ部署ぶしょ

cd skyeye-web
gradle clean distZip -x test
cd target/distributions
unzip skyeye-web-x.x.x.zip(がえ换相应的x为自己じこてき版本はんぽん)

cd skyeye-web-x.x.x
nohup bin/skyeye-web &

项目对接

需要じゅよう进行こころざしさいしゅうてき项目需要じゅよう按照如下操作そうさ

logback

gradleあるものpomちゅう加入かにゅうskyeye-clientてき

compile "skyeye:skyeye-client-logback:1.3.0"

配置はいち

ざいlogback.xmlちゅう加入かにゅういち个kafkaAppender,并在propertiesちゅう配置はいちこうあい关的值,如下(rpc这个项目ぜん支持しじnonedubbo,所以ゆえん如果项目中有ちゅううdubboふく务的配置はいちなりdubbo,ぼつゆうdubboふく务的配置はいちなりnone,以后かい支持しじ其他てきrpcかまち,如:thrift、spring cloudとう):

<property name="APP_NAME" value="your-app-name" />
<!-- kafka appender -->
<appender name="kafkaAppender" class="com.jthink.skyeye.client.logback.appender.KafkaAppender">
    <encoder class="com.jthink.skyeye.client.logback.encoder.KafkaLayoutEncoder">
      <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS};${CONTEXT_NAME};HOSTNAME;%thread;%-5level;%logger{96};%line;%msg%n</pattern>
      </layout>
    </encoder>
    <topic>app-log</topic>
    <rpc>none</rpc>
    <zkServers>riot01.jthink.com:2181,riot02.jthink.com:2181,riot03.jthink.com:2181</zkServers>
    <mail>xxx@xxx.com</mail>
    <keyBuilder class="com.jthink.skyeye.client.logback.builder.AppHostKeyBuilder" />

    <config>bootstrap.servers=riot01.jthink.com:9092,riot02.jthink.com:9092,riot03.jthink.com:9092</config>
    <config>acks=0</config>
    <config>linger.ms=100</config>
    <config>max.block.ms=5000</config>
  </appender>

log4j

gradleあるものpomちゅう加入かにゅうskyeye-clientてき

compile "skyeye:skyeye-client-log4j:1.3.0"

配置はいち

ざいlog4j.xmlちゅう加入かにゅういち个kafkaAppender,并在propertiesちゅう配置はいちこうあい关的值,如下(rpc这个项目ぜん支持しじnonedubbo,所以ゆえん如果项目中有ちゅううdubboふく务的配置はいちなりdubbo,ぼつゆうdubboふく务的配置はいちなりnone,以后かい支持しじ其他てきrpcかまち,如:thrift、spring cloudとう):

<appender name="kafkaAppender" class="com.jthink.skyeye.client.log4j.appender.KafkaAppender">
        <param name="topic" value="app-log"/>
        <param name="zkServers" value="riot01.jthink.com:2181,riot02.jthink.com:2181,riot03.jthink.com:2181"/>
        <param name="app" value="xxx"/>
        <param name="rpc" value="dubbo"/>
        <param name="mail" value="xxx@xxx.com"/>
        <param name="bootstrapServers" value="riot01.jthink.com:9092,riot02.jthink.com:9092,riot03.jthink.com:9092"/>
        <param name="acks" value="0"/>
        <param name="maxBlockMs" value="2000"/>
        <param name="lingerMs" value="100"/>

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS};APP_NAME;HOSTNAME;%t;%p;%c;%L;%m%n"/>
        </layout>
    </appender>

log4j2

gradleあるものpomちゅう加入かにゅうskyeye-clientてき

compile "skyeye:skyeye-client-log4j2:1.3.0"

配置はいち

ざいlog4j2.xmlちゅう加入かにゅういち个KafkaCustomize,并在propertiesちゅう配置はいちこうあい关的值,如下(rpc这个项目ぜん支持しじnonedubbo,所以ゆえん如果项目中有ちゅううdubboふく务的配置はいちなりdubbo,ぼつゆうdubboふく务的配置はいちなりnone,以后かい支持しじ其他てきrpcかまち,如:thrift、spring cloudとう):

<KafkaCustomize name="KafkaCustomize" topic="app-log" zkServers="riot01.jthink.com:2181,riot02.jthink.com:2181,riot03.jthink.com:2181"
                mail="qianjc@unionpaysmart.com" rpc="none" app="${APP_NAME}">
  <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
  <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS};${APP_NAME};HOSTNAME;%t;%-5level;%logger{96};%line;%msg%n"/>
  <Property name="bootstrap.servers">riot01.jthink.com:9092,riot02.jthink.com:9092,riot03.jthink.com:9092</Property>
  <Property name="acks">0</Property>
  <Property name="linger.ms">100</Property>
</KafkaCustomize>

注意ちゅういてん

logback

  • logbackざい对接kafkaてき时候ゆう个bug,jira bug所以ゆえん需要じゅようはたroot level设置为INFO(不能ふのうDEBUG)

log4j

よし于log4j本身ほんみてきappender较复杂难うつし所以ゆえんざい稳定せい性能せいのうじょうぼつゆうlogback支持しじとくこのみ,应用のう使用しようlogback请尽りょう使用しようlogback

rpc trace

使用しよう自己じこつつみてきdubbox(dubbox),ざいsoaちゅう间件dubboxちゅうふうそうりょうrpcてき跟踪

compile "com.101tec:zkclient:0.10"
compile ("com.alibaba:dubbo:2.8.4-skyeye-trace-1.3.0") {
  exclude group: 'org.springframework', module: 'spring'
}

spring boot

如果项目使用しようてきspring-boot+logback,需要じゅようはたspring-boot对logbackてきはつはじめ掉,防止ぼうしはつはじめてき时候ざいzkちゅうさつ两次而报错,具体ぐたい见我てき几篇はくきゃく就可以解决:

http://blog.csdn.net/jthink_/article/details/52513963

http://blog.csdn.net/jthink_/article/details/52613953

http://blog.csdn.net/jthink_/article/details/73106745

うめてん

にちこころざし类型

にちこころざし类型 说明
normal 正常せいじょうにゅう库日こころざし
invoke_interface api调用こころざし
middleware_opt ちゅう间件操作そうさこころざし(目前もくぜん支持しじhbasemongo)
job_execute job执行こころざし
rpc_trace rpc trace跟踪こころざし
custom_log てい义埋てんこころざし
thirdparty_call だい三方系统调用日志

正常せいじょうこころざし

LOGGER.info("わが测试こころざししるし")

apiこころざし

// さんすう为EventType(事件じけん类型)、api、账号、请求耗时、成功せいこう还是しつ败、具体ぐたいてい义的こころざし内容ないよう
LOGGER.info(ApiLog.buildApiLog(EventType.invoke_interface, "/app/status", "800001", 100, EventLog.MONITOR_STATUS_SUCCESS, "わがmock api成功せいこうこころざし").toString());
LOGGER.info(ApiLog.buildApiLog(EventType.invoke_interface, "/app/status", "800001", 10, EventLog.MONITOR_STATUS_FAILED, "わがmock apiしつ败日こころざし").toString());

ちゅう间件こころざし

// さんすう为EventType(事件じけん类型)、MiddleWare(ちゅう间件名称めいしょう)、操作そうさ耗时、成功せいこう还是しつ败、具体ぐたいてい义的こころざし内容ないよう
LOGGER.info(EventLog.buildEventLog(EventType.middleware_opt, MiddleWare.HBASE.symbol(), 100, EventLog.MONITOR_STATUS_SUCCESS, "わがmock middle ware成功せいこうこころざし").toString());
LOGGER.info(EventLog.buildEventLog(EventType.middleware_opt, MiddleWare.MONGO.symbol(), 10, EventLog.MONITOR_STATUS_FAILED, "わがmock middle wareしつ败日こころざし").toString());

job执行こころざし

// job执行仅仅处理しつ败的こころざし成功せいこうてき做处所以ゆえんただ需要じゅよう构造しつ败的こころざし), さんすう为EventType(事件じけん类型)、job てきidごう操作そうさ耗时、しつ败、具体ぐたいてい义的こころざし内容ないよう
LOGGER.info(EventLog.buildEventLog(EventType.job_execute, "application_1477705439920_0544", 10, EventLog.MONITOR_STATUS_FAILED, "わがmock job execしつ败日こころざし").toString());

だいさんぽう请求こころざし

// さんすう为EventType(事件じけん类型)、だいさんぽう名称めいしょう操作そうさ耗时、成功せいこう还是しつ败、具体ぐたいてい义的こころざし内容ないよう
LOGGER.info(EventLog.buildEventLog(EventType.thirdparty_call, "xx1", 100, EventLog.MONITOR_STATUS_FAILED, "わがmock third しつ败日こころざし").toString());
LOGGER.info(EventLog.buildEventLog(EventType.thirdparty_call, "xx1", 100, EventLog.MONITOR_STATUS_SUCCESS, "わがmock third 成功せいこうこころざし").toString());
LOGGER.info(EventLog.buildEventLog(EventType.thirdparty_call, "xx2", 100, EventLog.MONITOR_STATUS_SUCCESS, "わがmock third 成功せいこうこころざし").toString());
LOGGER.info(EventLog.buildEventLog(EventType.thirdparty_call, "xx2", 100, EventLog.MONITOR_STATUS_FAILED, "わがmock third しつ败日こころざし").toString());

About

对java、scalaとう运行于jvmてきほどじょ进行实时こころざしさいしゅう索引さくいん视化,对系统进ぎょう进程级别てき监控,对系统内部ないぶてき操作そうさ进行策略さくりゃくせいてき报警、对分布ぶんぷしきてきrpc调用进行trace跟踪以便于进ぎょう性能せいのう分析ぶんせき

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •