diff --git a/README.md b/README.md
index 9301dbb6..80bf6ad0 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,8 @@
-## 团队 DevOps 方案参考
-
-
-
-
+## 作者新方向,感谢支持
+- [从开公司到开发全平台产品(文字版)](https://github.com/cdk8s/cdk8s-team-style/blob/master/full-stack/README.md)
+- [从开公司到开发全平台产品(视频版)](https://space.bilibili.com/1765486559/channel/seriesdetail?sid=2359281)
## 初衷(Original Intention)
@@ -42,111 +40,3 @@
- [Linux 下常用压缩文件的解压、压缩](markdown-file/File-Extract-Compress.md)
- [Yum 下载安装包及对应依赖包](markdown-file/Off-line-Yum-Install.md)
- [Zsh 入门](markdown-file/Zsh.md)
-- [终端测速](markdown-file/speedtest.md)
-- [日常维护](markdown-file/maintenance.md)
-- [日常监控](markdown-file/monitor.md)
-- [nmon 系统性能监控工具](markdown-file/Nmon.md)
-- [Glances 安装和配置](markdown-file/Glances-Install-And-Settings.md)
-- [SSH(Secure Shell)介绍](markdown-file/SSH.md)
-- [FTP(File Transfer Protocol)介绍](markdown-file/FTP.md)
-- [VPN(Virtual Private Network)介绍](markdown-file/VPN.md)
-- [NFS(Network FileSystem)介绍](markdown-file/NFS.md)
-- [NTP(Network Time Protocol)介绍](markdown-file/NTP.md)
-- [Samba 介绍](markdown-file/Samba.md)
-- [Crontab 介绍](markdown-file/Crontab.md)
-- [Iptables 介绍](markdown-file/Iptables.md)
-- [花生壳-安装介绍](markdown-file/Hsk-Install.md)
-- [JDK 安装](markdown-file/JDK-Install.md)
-- [Java bin 目录下的工具](markdown-file/Java-bin.md)
-- [SVN 安装和配置](markdown-file/SVN-Install-And-Settings.md)
-- [Tomcat 安装和配置、优化](markdown-file/Tomcat-Install-And-Settings.md)
-- [Jenkins 安装和配置](markdown-file/Jenkins-Install-And-Settings.md)
-- [Maven 安装和配置](markdown-file/Maven-Install-And-Settings.md)
-- [Nexus 安装和配置](markdown-file/Nexus-Install-And-Settings.md)
-- [PostgreSQL 安装和配置](markdown-file/PostgreSQL-Install-And-Settings.md)
-- [MySQL 安装和配置](markdown-file/Mysql-Install-And-Settings.md)
-- [MySQL 优化](markdown-file/Mysql-Optimize.md)
-- [MySQL 测试](markdown-file/Mysql-Test.md)
-- [MySQL 教程](markdown-file/Mysql-Tutorial.md)
-- [Percona XtraDB Cluster(PXC)安装和配置](markdown-file/PXC-Install-And-Settings.md)
-- [Redis 安装和配置](markdown-file/Redis-Install-And-Settings.md)
-- [MongoDB 安装和配置](markdown-file/MongoDB-Install-And-Settings.md)
-- [Solr 安装和配置](markdown-file/Solr-Install-And-Settings.md)
-- [Jira 安装和配置](markdown-file/Jira-Install-And-Settings.md)
-- [Confluence 安装和配置](markdown-file/Confluence-Install-And-Settings.md)
-- [TeamCity 安装和配置](markdown-file/TeamCity-Install-And-Settings.md)
-- [Nginx 安装和配置](markdown-file/Nginx-Install-And-Settings.md)
-- [wrk 安装和配置](markdown-file/wrk-Install-And-Settings.md)
-- [FastDFS 安装和配置](markdown-file/FastDFS-Install-And-Settings.md)
-- [FastDFS 结合 GraphicsMagick](markdown-file/FastDFS-Nginx-Lua-GraphicsMagick.md)
-- [RabbitMQ 安装和配置](markdown-file/RabbitMQ-Install-And-Settings.md)
-- [Openfire 安装和配置](markdown-file/Openfire-Install-And-Settings.md)
-- [Rap 安装和配置](markdown-file/Rap-Install-And-Settings.md)
-- [Nginx + Keepalived 高可用](markdown-file/Nginx-Keepalived-Install-And-Settings.md)
-- [黑客入侵检查](markdown-file/Was-Hacked.md)
-- [Shadowsocks 安装和配置](markdown-file/http://code.youmeek.com/2016/08/19/2016/08/VPS/)
-- [Mycat 安装和配置](markdown-file/Mycat-Install-And-Settings.md)
-- [Zookeeper 安装和配置](markdown-file/Zookeeper-Install.md)
-- [Daemontools 工具介绍](markdown-file/Daemontools.md)
-- [Tmux 安装和配置](markdown-file/Tmux-Install-And-Settings.md)
-- [ELK 日志收集系统安装和配置](markdown-file/ELK-Install-And-Settings.md)
-- [Dubbo 安装和配置](markdown-file/Dubbo-Install-And-Settings.md)
-- [GitLab 安装和配置](markdown-file/Gitlab-Install-And-Settings.md)
-- [JMeter 安装和配置](markdown-file/JMeter-Install-And-Settings.md)
-- [Docker 安装和使用](markdown-file/Docker-Install-And-Usage.md)
-- [Harbor 安装和配置](markdown-file/Harbor-Install-And-Usage.md)
-- [LDAP 安装和使用](markdown-file/LDAP-Install-And-Settings.md)
-- [Alfresco 安装和使用](markdown-file/Alfresco-Install-And-Usage.md)
-- [Apache Thrift 安装和使用](markdown-file/Thrift-Install-And-Usage.md)
-- [Node.js 安装和使用](markdown-file/Node-Install-And-Usage.md)
-- [CI 整套服务安装和使用](markdown-file/CI-Install-And-Usage.md)
-- [YApi 安装和配置](markdown-file/YApi-Install-And-Settings.md)
-- [Kafka 安装和配置](markdown-file/Kafka-Install-And-Settings.md)
-- [Hadoop 安装和配置](markdown-file/Hadoop-Install-And-Settings.md)
-- [Showdoc 安装和配置](markdown-file/Showdoc-Install-And-Settings.md)
-- [WordPress 安装和配置](markdown-file/WordPress-Install-And-Settings.md)
-- [GoAccess 安装和配置](markdown-file/GoAccess-Install-And-Settings.md)
-- [Portainer 安装和配置](markdown-file/Portainer-Install-And-Settings.md)
-- [Grafana 安装和配置](markdown-file/Grafana-Install-And-Settings.md)
-- [Ansible 安装和配置](markdown-file/Ansible-Install-And-Settings.md)
-- [Wormhole + Flink 安装和配置](markdown-file/Wormhole-Install-And-Settings.md)
-- [SkyWalking 安装和配置](markdown-file/SkyWalking-Install-And-Settings.md)
-
-## 联系(Contact)
-
-- Email:judas.n@qq.com(常用) or admin@youmeek.com(备用)
-- Blog:
-- QQ 群交流,入群请看:
-- 欢迎捐赠 ^_^:
-
-
-## Github 协同视频教程(Participate)
-
-- 如果您不会使用 Git 或是 Github 也没关系,请认真学习下面视频教程:
-- Judas.n 录制
- - 视频格式:MP4
- - 分辨率:1920 X 1080
- - 片长:16 min
- - 文件大小:62 M
-- 下载
- - 百度云盘:
- - 360 网盘(2fb5):
-
-## Github 常用按钮说明
-
-- Watch:关注该项目,作者有更新的时候,会在你的 Github 主页有通知消息。
-- Star:收藏该项目,在你的头像上有一个“Your stars”链接,可以看到你的收藏列表。
-- Fork:复制一份项目到的Github空间上,你可以自己开发自己的这个地址项目,然后 Pull Request 给项目原主人。
-
-## 参与作者汇总(Author)
-
-|作者(按参与时间排序)|地址|
-|:---------|:---------|
-|Judas.n||
-|mrdear||
-|fooofei||
-
-## AD
-
-- [推荐:程序员的个性化网址导航:GitNavi.com](http://www.gitnavi.com/u/judasn/)
-- [适合后端开发者的前端 React-Admin](https://github.com/satan31415/umi-admin)
diff --git a/SUMMARY.md b/SUMMARY.md
index ef4a9f48..d034445b 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -87,6 +87,8 @@
* [WordPress 安装和配置](markdown-file/WordPress-Install-And-Settings.md)
* [GoAccess 安装和配置](markdown-file/GoAccess-Install-And-Settings.md)
* [Portainer 安装和配置](markdown-file/Portainer-Install-And-Settings.md)
+* [Influxdb 安装和配置](markdown-file/Influxdb-Install-And-Settings.md)
+* [Prometheus 安装和配置](markdown-file/Prometheus-Install-And-Settings.md)
* [Grafana 安装和配置](markdown-file/Grafana-Install-And-Settings.md)
* [Ansible 安装和配置](markdown-file/Ansible-Install-And-Settings.md)
* [Wormhole + Flink 安装和配置](markdown-file/Wormhole-Install-And-Settings.md)
diff --git a/TOC.md b/TOC.md
index 0b6b3709..434c20f7 100644
--- a/TOC.md
+++ b/TOC.md
@@ -84,6 +84,8 @@
- [WordPress 安装和配置](markdown-file/WordPress-Install-And-Settings.md)
- [GoAccess 安装和配置](markdown-file/GoAccess-Install-And-Settings.md)
- [Portainer 安装和配置](markdown-file/Portainer-Install-And-Settings.md)
+- [Influxdb 安装和配置](markdown-file/Influxdb-Install-And-Settings.md)
+- [Prometheus 安装和配置](markdown-file/Prometheus-Install-And-Settings.md)
- [Grafana 安装和配置](markdown-file/Grafana-Install-And-Settings.md)
- [Ansible 安装和配置](markdown-file/Ansible-Install-And-Settings.md)
- [Wormhole + Flink 安装和配置](markdown-file/Wormhole-Install-And-Settings.md)
diff --git a/centos-settings/Close-XWindow.md b/centos-settings/Close-XWindow.md
index 0a34275f..5b89f556 100644
--- a/centos-settings/Close-XWindow.md
+++ b/centos-settings/Close-XWindow.md
@@ -15,7 +15,14 @@
- 在图形界面中如果你希望临时关闭图形界面可以输入:`init 3`
-## CentOS 7 设置方法
+## CentOS 7 设置方法 1
+
+- 开机以命令模式启动,执行:
+ - systemctl set-default multi-user.target
+- 开机以图形界面启动,执行:
+ - systemctl set-default graphical.target
+
+## CentOS 7 设置方法 2
- 关闭图形
- `mv /etc/systemd/system/default.target /etc/systemd/system/default.target.bak` (改名备份)
diff --git a/favorite-file/Nginx-Settings/nginx-front.conf b/favorite-file/Nginx-Settings/nginx-front.conf
index 82894983..8b49d8f9 100644
--- a/favorite-file/Nginx-Settings/nginx-front.conf
+++ b/favorite-file/Nginx-Settings/nginx-front.conf
@@ -22,28 +22,35 @@ http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_time"';
-
+
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
-
+
gzip on;
gzip_buffers 8 16k;
gzip_min_length 512;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_http_version 1.1;
gzip_types text/plain text/css application/javascript application/x-javascript application/json application/xml;
-
+
server {
-
+
listen 8001;
server_name localhost 127.0.0.1 139.159.190.24 platform.gitnavi.com;
-
+
location / {
root /root/.jenkins/workspace/nestle-platform-front-test/dist;
index index.html index.htm;
try_files $uri /index.html;
}
-
+
+ ## 二级目录方式,记得 package.json 添加:"homepage": "cdk8s-markdown",
+ location ^~ /cdk8s-markdown {
+ root /root/.jenkins/workspace;
+ index index.html;
+ try_files $uri /cdk8s-markdown/index.html;
+ }
+
location ^~ /platform/ {
proxy_pass http://127.0.0.1:28081;
proxy_redirect off;
@@ -51,36 +58,36 @@ http {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
-
+
location ~ .*\.(js|css)?$ {
root /root/.jenkins/workspace/nestle-platform-front-test/dist;
}
-
+
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|woff|woff2|ttf|eot|txt|svg)$ {
root /root/.jenkins/workspace/nestle-platform-front-test/dist;
}
-
+
error_page 404 /404.html;
location = /usr/share/nginx/html/40x.html {
}
-
+
error_page 500 502 503 504 /50x.html;
location = /usr/share/nginx/html/50x.html {
}
}
-
+
server {
-
+
listen 8002;
server_name localhost 127.0.0.1 139.159.190.24 store.gitnavi.com;
-
+
location / {
root /root/.jenkins/workspace/nestle-store-front-test/dist;
index index.html index.htm;
try_files $uri /index.html;
}
-
+
location ^~ /store/ {
proxy_pass http://127.0.0.1:28082;
proxy_redirect off;
@@ -88,22 +95,22 @@ http {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
-
+
location ~ .*\.(js|css)?$ {
root /root/.jenkins/workspace/nestle-store-front-test/dist;
}
-
+
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|woff|woff2|ttf|eot|txt|svg)$ {
root /root/.jenkins/workspace/nestle-store-front-test/dist;
}
-
+
error_page 404 /404.html;
location = /usr/share/nginx/html/40x.html {
}
-
+
error_page 500 502 503 504 /50x.html;
location = /usr/share/nginx/html/50x.html {
}
}
-}
\ No newline at end of file
+}
diff --git a/favorite-file/gravitee-docker-compose/README.md b/favorite-file/gravitee-docker-compose/README.md
new file mode 100644
index 00000000..e4983ec9
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/README.md
@@ -0,0 +1,32 @@
+# graviteeio api gateway docker-compose running
+
+fork from graviteeio project && change some deps image
+
+-
+-
+
+## how to run
+
+```code
+cd platform && docker-compose up -d
+```
+
+## manager ui
+
+* api portal
+
+```code
+open https://localhost/apim/portal
+```
+
+* access manager ui
+
+```code
+open https://localhost/am/ui/
+```
+
+## Note:
+
+- environments directory has some demos with ci && traefik gateway
+- portal account admin amdin
+- access manager ui account admin adminadmin
\ No newline at end of file
diff --git a/favorite-file/gravitee-docker-compose/environments/ci/docker-compose.yml b/favorite-file/gravitee-docker-compose/environments/ci/docker-compose.yml
new file mode 100644
index 00000000..37c9c07c
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/ci/docker-compose.yml
@@ -0,0 +1,62 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+version: '2'
+
+services:
+ ci:
+ image: graviteeio/jenkins:latest
+ container_name: ci
+ network_mode: "bridge"
+ expose:
+ - 50022
+ ports:
+ - "50022:50022"
+ labels:
+ - "traefik.frontend.rule=Host:ci.gravitee.io"
+ - "traefik.port=8080"
+ volumes:
+ - /var/jenkins_home:/var/jenkins_home
+ - /var/run/docker.sock:/var/run/docker.sock
+ links:
+ - redis-test
+ - qa
+
+ redis-test:
+ image: redis:3
+ container_name: redis-test
+ network_mode: "bridge"
+
+ qa:
+ image: sonarqube:alpine
+ container_name: qa
+ network_mode: "bridge"
+ environment:
+ - SONARQUBE_JDBC_URL=jdbc:postgresql://sonarqube-db:5432/sonar
+ labels:
+ - "traefik.frontend.rule=Host:qa.gravitee.io"
+ volumes:
+ - /opt/sonarqube/conf:/opt/sonarqube/conf
+ - /opt/sonarqube/data:/opt/sonarqube/data
+ - /opt/sonarqube/extensions:/opt/sonarqube/extensions
+ - /opt/sonarqube/bundled-plugins:/opt/sonarqube/lib/bundled-plugins
+ links:
+ - sonarqube-db
+
+ sonarqube-db:
+ image: postgres:alpine
+ network_mode: "bridge"
+ environment:
+ - POSTGRES_USER=sonar
+ - POSTGRES_PASSWORD=sonar
+ volumes:
+ - /opt/sonarqube/postgresql/data:/var/lib/postgresql/data
diff --git a/favorite-file/gravitee-docker-compose/environments/demo/common.yml b/favorite-file/gravitee-docker-compose/environments/demo/common.yml
new file mode 100644
index 00000000..a1d7c696
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/demo/common.yml
@@ -0,0 +1,62 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+version: '2'
+
+volumes:
+ datamongo: {}
+ dataelasticsearch: {}
+
+services:
+ elasticsearch:
+ hostname: demo-elasticsearch
+ image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
+ volumes:
+ - dataelasticsearch:/usr/share/elasticsearch/data
+ environment:
+ - http.host=0.0.0.0
+ - transport.host=0.0.0.0
+ - xpack.security.enabled=false
+ - xpack.monitoring.enabled=false
+ - cluster.name=elasticsearch
+ - bootstrap.memory_lock=true
+ - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile: 65536
+
+ mongodb:
+ hostname: demo-mongodb
+ image: mongo:3.4
+ volumes:
+ - datamongo:/data/db
+
+ gateway:
+ hostname: demo-gateway
+ image: graviteeio/gateway:latest
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
+
+ managementui:
+ hostname: demo-managementui
+ image: graviteeio/management-ui:latest
+
+ managementapi:
+ hostname: demo-managementapi
+ image: graviteeio/management-api:latest
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
diff --git a/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-local.yml b/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-local.yml
new file mode 100644
index 00000000..38c34e4c
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-local.yml
@@ -0,0 +1,76 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+version: '2'
+
+volumes:
+ local_datamongo: {}
+ local_dataelasticsearch: {}
+
+services:
+ local_elasticsearch:
+ extends:
+ file: common.yml
+ service: elasticsearch
+ volumes:
+ - local_dataelasticsearch:/usr/share/elasticsearch/data
+ - ./logs/elasticsearch:/var/log/elasticsearch
+
+ local_mongodb:
+ extends:
+ file: common.yml
+ service: mongodb
+ volumes:
+ - local_datamongo:/data/db
+ - ./logs/mongodb:/var/log/mongodb
+
+ local_gateway:
+ extends:
+ file: common.yml
+ service: gateway
+ links:
+ - "local_mongodb:demo-mongodb"
+ - "local_elasticsearch:demo-elasticsearch"
+ ports:
+ - "8000:8082"
+ volumes:
+ - ./logs/gateway:/etc/gravitee.io/log
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_ratelimit_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_reporters_elasticsearch_endpoints_0=http://demo-elasticsearch:9200
+
+ local_managementui:
+ extends:
+ file: common.yml
+ service: managementui
+ ports:
+ - "8002:80"
+ volumes:
+ - ./logs/management-ui:/var/log/httpd
+ environment:
+ - MGMT_API_URL=http:\/\/localhost:8005\/management\/
+
+ local_managementapi:
+ extends:
+ file: common.yml
+ service: managementapi
+ ports:
+ - "8005:8083"
+ volumes:
+ - ./logs/management-api:/home/gravitee/logs
+ links:
+ - "local_mongodb:demo-mongodb"
+ - "local_elasticsearch:demo-elasticsearch"
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_analytics_elasticsearch_endpoints_0=http://demo-elasticsearch:9200
diff --git a/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-traefik-latest.yml b/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-traefik-latest.yml
new file mode 100644
index 00000000..e3ea6bce
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-traefik-latest.yml
@@ -0,0 +1,76 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+version: '2'
+
+volumes:
+ latest_datamongo: {}
+ latest_dataelasticsearch: {}
+
+services:
+ latest_elasticsearch:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: elasticsearch
+ volumes:
+ - latest_dataelasticsearch:/usr/share/elasticsearch/data
+
+ latest_mongodb:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: mongodb
+ volumes:
+ - latest_datamongo:/data/db
+
+ latest_gateway:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: gateway
+ links:
+ - latest_mongodb
+ - latest_elasticsearch
+ labels:
+ - "traefik.backend=graviteeio-gateway"
+ - "traefik.frontend.rule=Host:demo.gravitee.io;PathPrefixStrip:/gateway"
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_ratelimit_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_reporters_elasticsearch_endpoints_0=http://demo-elasticsearch:9200
+
+ latest_managementui:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: managementui
+ labels:
+ - "traefik.backend=graviteeio-managementui"
+ - "traefik.frontend.rule=Host:demo.gravitee.io"
+ environment:
+ - MGMT_API_URL=https:\/\/demo.gravitee.io\/management\/
+
+ latest_managementapi:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: managementapi
+ labels:
+ - "traefik.backend=graviteeio-managementapi"
+ - "traefik.frontend.rule=Host:demo.gravitee.io;PathPrefix:/management"
+ links:
+ - latest_mongodb
+ - latest_elasticsearch
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_analytics_elasticsearch_endpoints_0=http://demo-elasticsearch:9200
\ No newline at end of file
diff --git a/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-traefik-nightly.yml b/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-traefik-nightly.yml
new file mode 100644
index 00000000..2369851c
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/demo/docker-compose-traefik-nightly.yml
@@ -0,0 +1,79 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+version: '2'
+
+volumes:
+ nightly_datamongo: {}
+ nightly_dataelasticsearch: {}
+
+services:
+ nightly_elasticsearch:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: elasticsearch
+ volumes:
+ - nightly_dataelasticsearch:/usr/share/elasticsearch/data
+
+ nightly_mongodb:
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: mongodb
+ volumes:
+ - nightly_datamongo:/data/db
+
+ nightly_gateway:
+ image: graviteeio/gateway:nightly
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: gateway
+ links:
+ - nightly_mongodb
+ - nightly_elasticsearch
+ labels:
+ - "traefik.backend=nightly-graviteeio-gateway"
+ - "traefik.frontend.rule=Host:nightly.gravitee.io;PathPrefixStrip:/gateway"
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_ratelimit_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_reporters_elasticsearch_endpoints_0=http://demo-elasticsearch:9200
+
+ nightly_managementui:
+ image: graviteeio/management-ui:nightly
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: managementui
+ labels:
+ - "traefik.backend=nightly-graviteeio-managementui"
+ - "traefik.frontend.rule=Host:nightly.gravitee.io"
+ environment:
+ - MGMT_API_URL=https:\/\/nightly.gravitee.io\/management\/
+
+ nightly_managementapi:
+ image: graviteeio/management-api:nightly
+ network_mode: "bridge"
+ extends:
+ file: common.yml
+ service: managementapi
+ labels:
+ - "traefik.backend=nightly-graviteeio-managementapi"
+ - "traefik.frontend.rule=Host:nightly.gravitee.io;PathPrefix:/management"
+ links:
+ - nightly_mongodb
+ - nightly_elasticsearch
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://demo-mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_analytics_elasticsearch_endpoints_0=http://demo-elasticsearch:9200
\ No newline at end of file
diff --git a/favorite-file/gravitee-docker-compose/environments/demo/launch.sh b/favorite-file/gravitee-docker-compose/environments/demo/launch.sh
new file mode 100755
index 00000000..ff51ff04
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/demo/launch.sh
@@ -0,0 +1,91 @@
+#!/bin/bash
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+
+readonly WORKDIR="$HOME/graviteeio-demo"
+readonly DIRNAME=`dirname $0`
+readonly PROGNAME=`basename $0`
+readonly color_title='\033[32m'
+readonly color_text='\033[1;36m'
+
+# OS specific support (must be 'true' or 'false').
+declare cygwin=false
+declare darwin=false
+declare linux=false
+declare dc_exec="docker-compose -f docker-compose-local.yml up"
+
+welcome() {
+ echo
+ echo -e " ${color_title} _____ _____ __ _______ _______ ______ ______ _____ ____ \033[0m"
+ echo -e " ${color_title} / ____| __ \ /\ \ / /_ _|__ __| ____| ____| |_ _/ __ \ \033[0m"
+ echo -e " ${color_title}| | __| |__) | / \ \ / / | | | | | |__ | |__ | || | | | \033[0m"
+ echo -e " ${color_title}| | |_ | _ / / /\ \ \/ / | | | | | __| | __| | || | | | \033[0m"
+ echo -e " ${color_title}| |__| | | \ \ / ____ \ / _| |_ | | | |____| |____ _ _| || |__| | \033[0m"
+ echo -e " ${color_title} \_____|_| \_\/_/ \_\/ |_____| |_| |______|______(_)_____\____/ \033[0m"
+ echo -e " ${color_title} | | \033[0m${color_text}http://gravitee.io\033[0m"
+ echo -e " ${color_title} __| | ___ _ __ ___ ___ \033[0m"
+ echo -e " ${color_title} / _\` |/ _ \ '_ \` _ \ / _ \ \033[0m"
+ echo -e " ${color_title}| (_| | __/ | | | | | (_) | \033[0m"
+ echo -e " ${color_title} \__,_|\___|_| |_| |_|\___/ \033[0m"
+ echo
+}
+
+init_env() {
+ local dockergrp
+ # define env
+ case "`uname`" in
+ CYGWIN*)
+ cygwin=true
+ ;;
+
+ Darwin*)
+ darwin=true
+ ;;
+
+ Linux)
+ linux=true
+ ;;
+ esac
+
+ # test if docker must be run with sudo
+ dockergrp=$(groups | grep -c docker)
+ if [[ $darwin == false && $dockergrp == 0 ]]; then
+ dc_exec="sudo $dc_exec";
+ fi
+}
+
+init_dirs() {
+ echo "Init log directory in $WORKDIR ..."
+ mkdir -p "$WORKDIR/logs/"
+ echo
+}
+
+main() {
+ welcome
+ init_env
+ if [[ $? != 0 ]]; then
+ exit 1
+ fi
+ set -e
+ init_dirs
+ pushd $WORKDIR > /dev/null
+ echo "Download docker compose files ..."
+ curl -L https://raw.githubusercontent.com/gravitee-io/gravitee-docker/master/environments/demo/common.yml -o "common.yml"
+ curl -L https://raw.githubusercontent.com/gravitee-io/gravitee-docker/master/environments/demo/docker-compose-local.yml -o "docker-compose-local.yml"
+ echo
+ echo "Launch GraviteeIO demo ..."
+ $dc_exec
+ popd > /dev/null
+}
+
+main
diff --git a/favorite-file/gravitee-docker-compose/environments/sample-apis/docker-compose-sample-apis.yml b/favorite-file/gravitee-docker-compose/environments/sample-apis/docker-compose-sample-apis.yml
new file mode 100644
index 00000000..10c1a074
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/environments/sample-apis/docker-compose-sample-apis.yml
@@ -0,0 +1,47 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2015 The Gravitee team (http://gravitee.io)
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+version: '2'
+
+services:
+
+ sample-api-index:
+ image: graviteeio/gravitee-sample-index:latest
+ network_mode: "bridge"
+ labels:
+ - "traefik.backend=gravitee-sample-index"
+ - "traefik.frontend.rule=Host:api.gravitee.io"
+ - "traefik.frontend.entryPoints=https"
+
+ sample-api-echo:
+ image: graviteeio/gravitee-echo-api:nightly
+ network_mode: "bridge"
+ labels:
+ - "traefik.backend=gravitee-echo-api"
+ - "traefik.frontend.rule=Host:api.gravitee.io;PathPrefix:/echo"
+ - "traefik.frontend.entryPoints=https"
+
+ sample-api-whoami:
+ image: graviteeio/gravitee-whoami-api:latest
+ network_mode: "bridge"
+ labels:
+ - "traefik.backend=gravitee-whoami-api"
+ - "traefik.frontend.rule=Host:api.gravitee.io;PathPrefix:/whoami"
+ - "traefik.frontend.entryPoints=https"
+
+ sample-api-whattimeisit:
+ image: graviteeio/gravitee-whattimeisit-api:latest
+ network_mode: "bridge"
+ labels:
+ - "traefik.backend=gravitee-whattimeisit-api"
+ - "traefik.frontend.rule=Host:api.gravitee.io;PathPrefix:/whattimeisit"
+ - "traefik.frontend.entryPoints=https"
diff --git a/favorite-file/gravitee-docker-compose/platform/docker-compose.yml b/favorite-file/gravitee-docker-compose/platform/docker-compose.yml
new file mode 100644
index 00000000..3771102c
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/platform/docker-compose.yml
@@ -0,0 +1,135 @@
+version: '3'
+
+networks:
+ default:
+
+services:
+ nginx:
+ image: nginx:1.15-alpine
+ container_name: gio_platform_nginx
+ volumes:
+ - ./nginx/nginx.conf:/etc/nginx/nginx.conf
+ - ./nginx/ssl/gio-selfsigned.crt:/etc/ssl/certs/gio-selfsigned.crt
+ - ./nginx/ssl/gio-selfsigned.key:/etc/ssl/private/gio-selfsigned.key
+ - ./nginx/ssl/gio.pem:/etc/ssl/certs/gio.pem
+ ports:
+ - "80:80"
+ - "443:443"
+ depends_on:
+ - apim_gateway
+ - apim_portal
+ - apim_management
+ - am_gateway
+ - am_management
+ - am_webui
+
+ mongodb:
+ image: mongo:3.4
+ container_name: gio_platform_mongo
+ ports:
+ - 27017:27017
+ environment:
+ - MONGO_INITDB_DATABASE=gravitee
+ volumes:
+ - ./mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
+ - ./data/mongo:/data/db
+ - ./logs/mongodb:/var/log/mongodb
+
+ elasticsearch:
+ image: elasticsearch:6.4.0
+ container_name: gio_platform_elasticsearch
+ ports:
+ - 9200:9200
+ environment:
+ - http.host=0.0.0.0
+ - transport.host=0.0.0.0
+ - xpack.security.enabled=false
+ - xpack.monitoring.enabled=false
+ - cluster.name=elasticsearch
+ ulimits:
+ nofile: 65536
+ volumes:
+ - ./data/elasticsearch:/usr/share/elasticsearch/data
+ - ./logs/elasticsearch:/var/log/elasticsearch
+
+ apim_gateway:
+ image: graviteeio/gateway:latest
+ container_name: gio_platform_apim_gateway
+ volumes:
+ - ./logs/apim-gateway:/opt/graviteeio-gateway/logs
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
+ - gravitee_services_metrics_enabled=true
+ - gravitee_services_metrics_prometheus.enabled=true
+ depends_on:
+ - mongodb
+ - elasticsearch
+
+ apim_portal:
+ image: graviteeio/management-ui:latest
+ container_name: gio_platform_apim_portal
+ environment:
+ - MGMT_API_URL=https:\/\/localhost\/apim\/management\/
+ depends_on:
+ - apim_management
+
+ apim_management:
+ image: graviteeio/management-api:latest
+ container_name: gio_platform_apim_mgmt_api
+ volumes:
+ - ./logs/apim-management-api:/opt/graviteeio-management-api/logs
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
+ - gravitee_jwt_cookiepath=/apim/management
+ - gravitee_jwt_cookiesecure=true
+ depends_on:
+ - mongodb
+ - elasticsearch
+
+ am_gateway:
+ image: graviteeio/am-gateway:2
+ container_name: gio_platform_am_gateway
+ volumes:
+ - ./logs/am-gateway:/opt/graviteeio-am-gateway/logs
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_oauth2_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ depends_on:
+ - mongodb
+
+ am_management:
+ image: graviteeio/am-management-api:2
+ container_name: gio_platform_am_management
+ volumes:
+ - ./logs/am-management-api:/opt/graviteeio-am-management-api/logs
+ environment:
+ - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_oauth2_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
+ - gravitee_jwt_cookiepath=/am/management
+ - gravitee_jwt_cookiesecure=true
+ depends_on:
+ - mongodb
+ grafana:
+ image: grafana/grafana
+ ports:
+ - "3000:3000"
+ prometheus:
+ image: prom/prometheus
+ volumes:
+ - "./prometheus.yml:/etc/prometheus/prometheus.yml"
+ ports:
+ - "9090:9090"
+ am_webui:
+ image: graviteeio/am-management-ui:2
+ container_name: gio_platform_am_webui
+ environment:
+ - MGMT_API_URL=https:\/\/localhost\/am\/
+ - MGMT_UI_URL=https:\/\/localhost\/am\/ui\/
+ volumes:
+ - ./logs/am-webui:/var/log/nginx
+ depends_on:
+ - am_management
diff --git a/favorite-file/gravitee-docker-compose/platform/mongo/docker-entrypoint-initdb.d/create-index.js b/favorite-file/gravitee-docker-compose/platform/mongo/docker-entrypoint-initdb.d/create-index.js
new file mode 100644
index 00000000..b6f2d379
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/platform/mongo/docker-entrypoint-initdb.d/create-index.js
@@ -0,0 +1,92 @@
+
+// "apis" collection
+db.apis.dropIndexes();
+db.apis.createIndex( { "visibility" : 1 } );
+db.apis.createIndex( { "group" : 1 } );
+db.apis.reIndex();
+
+// "applications" collection
+db.applications.dropIndexes();
+db.applications.createIndex( { "group" : 1 } );
+db.applications.createIndex( { "name" : 1 } );
+db.applications.createIndex( { "status" : 1 } );
+db.applications.reIndex();
+
+// "events" collection
+db.events.dropIndexes();
+db.events.createIndex( { "type" : 1 } );
+db.events.createIndex( { "updatedAt" : 1 } );
+db.events.createIndex( { "properties.api_id" : 1 } );
+db.events.createIndex( { "properties.api_id":1, "type":1} );
+db.events.reIndex();
+
+// "plans" collection
+db.plans.dropIndexes();
+db.plans.createIndex( { "apis" : 1 } );
+db.plans.reIndex();
+
+// "subscriptions" collection
+db.subscriptions.dropIndexes();
+db.subscriptions.createIndex( { "plan" : 1 } );
+db.subscriptions.createIndex( { "application" : 1 } );
+db.subscriptions.reIndex();
+
+// "keys" collection
+db.keys.dropIndexes();
+db.keys.createIndex( { "plan" : 1 } );
+db.keys.createIndex( { "application" : 1 } );
+db.keys.createIndex( { "updatedAt" : 1 } );
+db.keys.createIndex( { "revoked" : 1 } );
+db.keys.createIndex( { "plan" : 1 , "revoked" : 1, "updatedAt" : 1 } );
+db.keys.reIndex();
+
+// "pages" collection
+db.pages.dropIndexes();
+db.pages.createIndex( { "api" : 1 } );
+db.pages.reIndex();
+
+// "memberships" collection
+db.memberships.dropIndexes();
+db.memberships.createIndex( {"_id.userId":1, "_id.referenceId":1, "_id.referenceType":1}, { unique: true } );
+db.memberships.createIndex( {"_id.referenceId":1, "_id.referenceType":1} );
+db.memberships.createIndex( {"_id.referenceId":1, "_id.referenceType":1, "roles":1} );
+db.memberships.createIndex( {"_id.userId":1, "_id.referenceType":1} );
+db.memberships.createIndex( {"_id.userId":1, "_id.referenceType":1, "roles":1} );
+db.memberships.reIndex();
+
+// "roles" collection
+db.roles.dropIndexes();
+db.roles.createIndex( {"_id.scope": 1 } );
+db.roles.reIndex();
+
+// "audits" collection
+db.audits.dropIndexes();
+db.audits.createIndex( { "referenceType": 1, "referenceId": 1 } );
+db.audits.createIndex( { "createdAt": 1 } );
+db.audits.reIndex();
+
+// "rating" collection
+db.rating.dropIndexes();
+db.rating.createIndex( { "api" : 1 } );
+db.rating.reIndex();
+
+// "ratingAnswers" collection
+db.ratingAnswers.dropIndexes();
+db.ratingAnswers.createIndex( { "rating" : 1 } );
+
+// "portalnotifications" collection
+db.portalnotifications.dropIndexes();
+db.portalnotifications.createIndex( { "user" : 1 } );
+db.portalnotifications.reIndex();
+
+// "portalnotificationconfigs" collection
+db.portalnotificationconfigs.dropIndexes();
+db.portalnotificationconfigs.createIndex( {"_id.user":1, "_id.referenceId":1, "_id.referenceType":1}, { unique: true } );
+db.portalnotificationconfigs.createIndex( {"_id.referenceId":1, "_id.referenceType":1, "hooks":1});
+db.portalnotificationconfigs.reIndex();
+
+// "genericnotificationconfigs" collection
+db.genericnotificationconfigs.dropIndexes();
+db.genericnotificationconfigs.createIndex( {"referenceId":1, "referenceType":1, "hooks":1});
+db.genericnotificationconfigs.createIndex( {"referenceId":1, "referenceType":1});
+db.genericnotificationconfigs.reIndex();
diff --git a/favorite-file/gravitee-docker-compose/platform/nginx/nginx.conf b/favorite-file/gravitee-docker-compose/platform/nginx/nginx.conf
new file mode 100644
index 00000000..d08fc26c
--- /dev/null
+++ b/favorite-file/gravitee-docker-compose/platform/nginx/nginx.conf
@@ -0,0 +1,133 @@
+worker_processes 4;
+
+events { worker_connections 1024; }
+
+http {
+ include /etc/nginx/mime.types;
+ resolver 127.0.0.11 ipv6=off;
+
+ upstream apim_management {
+ server apim_management:8083;
+ }
+
+ upstream apim_gateway {
+ server apim_gateway:8082;
+ }
+
+ upstream apim_portal {
+ server apim_portal:80;
+ }
+
+ upstream am_management {
+ server am_management:8093;
+ }
+
+ upstream am_gateway {
+ server am_gateway:8092;
+ }
+
+ upstream am_webui {
+ server am_webui:80;
+ }
+
+ server {
+ listen 80;
+ server_name localhost;
+ return 301 https://$server_name$request_uri; #Redirection
+ }
+
+ server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+
+ server_name localhost;
+
+ ssl_certificate /etc/ssl/certs/gio-selfsigned.crt;
+ ssl_certificate_key /etc/ssl/private/gio-selfsigned.key;
+ ssl_dhparam /etc/ssl/certs/gio.pem;
+
+ error_page 500 502 503 504 /50x.html;
+
+ location /apim/portal/ {
+ proxy_pass http://apim_portal/;
+ proxy_redirect $scheme://$host:$server_port/ $scheme://$http_host/apim/portal/;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Host $server_name;
+ }
+
+ location /apim/management/ {
+ proxy_pass http://apim_management/management/;
+ proxy_redirect $scheme://$host:$server_port/management/ /apim/management/;
+ sub_filter "/management/" "/apim/management/";
+ sub_filter_types application/json;
+ sub_filter_once off;
+ proxy_cookie_path /management /apim/management;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Host $server_name;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+
+ location /apim/ {
+ proxy_pass http://apim_gateway/;
+ proxy_cookie_path / /apim;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Host $server_name;
+ }
+
+ location /am/ui/ {
+ proxy_pass http://am_webui/;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Host $server_name;
+ sub_filter '
- - 7.x:7.1.0
- - 6.x:6.8.0
- - 5.x:5.6.8
+- 官网列表:
+- 阿里云支持版本:
+ - 阿里云有一个 `插件配置` 功能,常用的 Elasticsearch 插件都带了,勾选下即可安装。也支持上传安装。
- 注意:docker 版本下 client.transport.sniff = true 是无效的。
+
+#### 5.6.x
+
- `vim ~/elasticsearch-5.6.8-docker.yml`
- 启动:`docker-compose -f ~/elasticsearch-5.6.8-docker.yml -p elasticsearch_5.6.8 up -d`
@@ -15,7 +18,7 @@ version: '3'
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.8
- container_name: elasticsearch1
+ container_name: elasticsearch-5.6.8
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "cluster.name=elasticsearch"
@@ -38,6 +41,61 @@ services:
```
+#### 6.7.x(带 ik 分词)
+
+- `vim ~/elasticsearch-6.7.2-docker.yml`
+- 启动:`docker-compose -f ~/elasticsearch-6.7.2-docker.yml -p elasticsearch_6.7.2 up -d`
+- `mkdir -p /data/docker/elasticsearch-6.7.2/data`
+- 如果官网镜像比较慢可以换成阿里云:`registry.cn-hangzhou.aliyuncs.com/elasticsearch/elasticsearch:6.7.2`
+- 下载 ik 分词(版本必须和 Elasticsearch 版本对应,包括小版本号):
+
+```
+version: '3'
+services:
+ elasticsearch1:
+ image: docker.elastic.co/elasticsearch/elasticsearch:6.7.2
+ container_name: elasticsearch-6.7.2
+ environment:
+ - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+ - "cluster.name=elasticsearch"
+ - "network.host=0.0.0.0"
+ - "http.host=0.0.0.0"
+ - "xpack.security.enabled=false"
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile:
+ soft: 65536
+ hard: 65536
+ ports:
+ - 9200:9200
+ - 9300:9300
+ volumes:
+ - /data/docker/elasticsearch-6.7.2/data:/usr/share/elasticsearch/data
+ - /data/docker/ik:/usr/share/elasticsearch/plugins/ik
+```
+
+- Elasticsearch Head 插件地址:
+- 测试:
+
+
+```
+http://localhost:9200/
+_analyze?pretty POST
+
+
+{"analyzer":"ik_smart","text":"安徽省长江流域"}
+```
+
+- ik_max_word 和 ik_smart 什么区别?
+
+```
+ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;
+ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。
+```
+
+
-------------------------------------------------------------------
diff --git a/markdown-file/Grafana-Install-And-Settings.md b/markdown-file/Grafana-Install-And-Settings.md
index 095c2b27..c0c12ae3 100644
--- a/markdown-file/Grafana-Install-And-Settings.md
+++ b/markdown-file/Grafana-Install-And-Settings.md
@@ -6,6 +6,30 @@
- [支持的 Elasticsearch 版本](http://docs.grafana.org/features/datasources/elasticsearch/#elasticsearch-version)
+## Grafana Docker 安装
+
+- 官网:
+
+```
+mkdir -p /data/docker/grafana/data
+chmod 777 -R /data/docker/grafana/data
+
+docker run -d --name grafana -p 3000:3000 -v /data/docker/grafana/data:/var/lib/grafana grafana/grafana
+
+docker exec -it grafana /bin/bash
+
+容器中默认的配置文件位置:/etc/grafana/grafana.ini
+复制出配置文件到宿主机:docker cp grafana:/etc/grafana/grafana.ini /Users/gitnavi/
+```
+
+-
+- 默认管理账号;admin,密码:admin,第一次登录后需要修改密码,也可以通过配置文件修改
+
+```
+[security]
+admin_user = admin
+admin_password = admin
+```
----------------------------------------------------------------------------------------------
## Grafana 安装
@@ -62,6 +86,12 @@ sudo systemctl status grafana-server
- 个性化设置:
- 软件变量:
+## 官网 dashboard
+
+- dashboar仓库地址:
+- 本地可以通过输入 dashboard id 导入别人模板
+- 打开:
+ - 输入对应的 id,点击 Load 即可
----------------------------------------------------------------------------------------------
diff --git a/markdown-file/Influxdb-Install-And-Settings.md b/markdown-file/Influxdb-Install-And-Settings.md
new file mode 100644
index 00000000..82fe262d
--- /dev/null
+++ b/markdown-file/Influxdb-Install-And-Settings.md
@@ -0,0 +1,70 @@
+# Influxdb 安装和配置
+
+
+
+## Influxdb Docker 安装
+
+- 官网库:
+
+
+```
+docker run -d --name influxdb \
+-p 8086:8086 -p 8083:8083 \
+-e INFLUXDB_HTTP_AUTH_ENABLED=true \
+-e INFLUXDB_ADMIN_ENABLED=true -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=123456 \
+-e INFLUXDB_DB=mydb1 \
+-v /Users/gitnavi/docker_data/influxdb/data:/var/lib/influxdb influxdb
+```
+
+
+- 进入终端交互:
+
+```
+docker exec -it influxdb /bin/bash
+
+输入:influx,开始终端交互
+
+auth admin 123456
+show databases;
+
+use springboot
+show measurements
+
+show series from "jvm_buffer_total_capacity"
+
+select * from "jvm_buffer_total_capacity"
+
+
+如果你要再额外创建数据库:
+create database demo
+
+如果你要再创建用户:
+create user "myuser" with password '123456' with all privileges
+```
+
+
+----------------------------------------------------------------------------------------------
+
+## 配置
+
+
+
+----------------------------------------------------------------------------------------------
+
+
+
+----------------------------------------------------------------------------------------------
+
+
+## 其他资料
+
+-
+- <>
+- <>
+- <>
+- <>
+- <>
+- <>
+- <>
+- <>
+
diff --git a/markdown-file/JMeter-Install-And-Settings.md b/markdown-file/JMeter-Install-And-Settings.md
index 3fd087b9..31946f33 100644
--- a/markdown-file/JMeter-Install-And-Settings.md
+++ b/markdown-file/JMeter-Install-And-Settings.md
@@ -160,8 +160,8 @@ remote_hosts=192.168.0.1:1099,192.168.0.2:1099
- [快速学习Jmeter性能测试工具](http://gitbook.cn/books/58de71a8be13fa66243873ef/index.html)
- [jmeter:菜鸟入门到进阶系列](http://www.cnblogs.com/imyalost/p/7062784.html)
- 国内视频教程:
- - [JMeter 性能测试入门篇 - 慕课网](https://www.imooc.com/learn/735)
- [JMeter 之 HTTP 协议接口性能测试 - 慕课网](https://www.imooc.com/learn/791)
+ - [接口测试基础之入门篇 - 慕课网](https://www.imooc.com/learn/738)
- [JMeter 性能测试进阶案例实战 - 慕课网](https://coding.imooc.com/class/142.html)
- [性能测试工具—Jmeter- 我要自学网](http://www.51zxw.net/list.aspx?page=2&cid=520)
- [jmeter 视频教学课程 - 小强](https://www.youtube.com/watch?v=zIiXpCBaBgQ&list=PL3rfV4zNE8CD-rAwlXlGXilN5QpkqDWox)
diff --git a/markdown-file/Mysql-Test.md b/markdown-file/Mysql-Test.md
index 2a5799e0..f18d3f0f 100644
--- a/markdown-file/Mysql-Test.md
+++ b/markdown-file/Mysql-Test.md
@@ -199,6 +199,8 @@ cd tpcc-mysql/src
make
如果make没报错,就会在tpcc-mysql 根目录文件夹下生成tpcc二进制命令行工具tpcc_load、tpcc_start
+
+如果要同时支持 PgSQL 可以考虑:https://github.com/Percona-Lab/sysbench-tpcc
```
### 测试的几个表介绍
diff --git a/markdown-file/Nginx-Install-And-Settings.md b/markdown-file/Nginx-Install-And-Settings.md
index 71cb04a4..6a5ffb0c 100644
--- a/markdown-file/Nginx-Install-And-Settings.md
+++ b/markdown-file/Nginx-Install-And-Settings.md
@@ -102,6 +102,26 @@ http {
-------------------------------------------------------------------
+## Nginx 源码编译安装(带 Prometheus 模块)
+
+```
+./configure \
+--prefix=/usr/local/nginx \
+--pid-path=/var/local/nginx/nginx.pid \
+--lock-path=/var/lock/nginx/nginx.lock \
+--error-log-path=/var/log/nginx/error.log \
+--http-log-path=/var/log/nginx/access.log \
+--with-http_gzip_static_module \
+--http-client-body-temp-path=/var/temp/nginx/client \
+--http-proxy-temp-path=/var/temp/nginx/proxy \
+--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
+--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
+--with-http_ssl_module \
+--with-http_stub_status_module \
+--http-scgi-temp-path=/var/temp/nginx/scgi \
+--add-module=/usr/local/nginx-module-vts
+```
+
## Nginx 源码编译安装(带监控模块)
@@ -290,6 +310,27 @@ upgrade:
- 更新 `make upgrade`
+## 为 Nginx 添加 basic_auth
+
+```
+yum install httpd-tools
+
+htpasswd -c /opt/nginx-auth/passwd.db myusername,回车之后输入两次密码
+
+
+server {
+ ...
+
+ location / {
+ auth_basic "please input you user name and password";
+ auth_basic_user_file /opt/nginx-auth/passwd.db;
+ ....
+ }
+}
+
+```
+
+
## Nginx 全局变量
- $arg_PARAMETER #这个变量包含GET请求中,如果有变量PARAMETER时的值。
@@ -578,6 +619,20 @@ http {
```
+- 最新版本的 Nginx SSL 配置
+
+```
+listen 443 ssl;
+
+ssl_certificate /opt/jar/ssl/server.crt;
+ssl_certificate_key /opt/jar/ssl/server.key;
+
+ssl_session_timeout 5m;
+ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
+ssl_prefer_server_ciphers on;
+```
+
----------------------------------------------------------------------
## Nginx 压力测试
diff --git a/markdown-file/Prometheus-Install-And-Settings.md b/markdown-file/Prometheus-Install-And-Settings.md
new file mode 100644
index 00000000..7780838c
--- /dev/null
+++ b/markdown-file/Prometheus-Install-And-Settings.md
@@ -0,0 +1,313 @@
+# Prometheus 安装和配置
+
+- 不错的发展史说明:
+- 特别说明:一般这类环境要尽可能保证所有服务器时间一致
+- Prometheus 本地存储不适合存长久数据,一般存储一个月就够了。要永久存储需要用到远端存储,远端存储可以用 OpenTSDB
+- Prometheus 也不适合做日志存储,日志存储还是推荐 ELK 方案
+
+## Prometheus Docker 安装
+
+- 官网:
+- Docker 官方镜像:
+- 这里以 Spring Boot Metrics 为收集信息
+- 创建配置文件:`vim /data/docker/prometheus/config/prometheus.yml`
+- 在 scrape_configs 位置下增加我们自己应用的路径信息
+
+```
+# my global config
+global:
+ scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
+ evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
+ # scrape_timeout is set to the global default (10s).
+
+# Alertmanager configuration
+alerting:
+ alertmanagers:
+ - static_configs:
+ - targets:
+ # - alertmanager:9093
+
+# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
+rule_files:
+ # - "first_rules.yml"
+ # - "second_rules.yml"
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+ - job_name: 'springboot'
+ metrics_path: '/tkey-actuator/actuator/prometheus'
+ static_configs:
+ - targets: ['192.168.2.225:8811']
+```
+
+- 启动
+
+```
+docker run -d --name prometheus -p 9091:9090 \
+-v /data/docker/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
+prom/prometheus
+```
+
+- 然后配置 Grafana,使用这个 dashboard:
+
+
+----------------------------------------------------------------------------------------------
+
+## 配置
+
+- 官网 exporter 列表:
+- 官网 exporter 暴露的端口列表:
+
+
+### CentOS7 服务器
+
+- 当前最新版本:node_exporter 0.18.1(201907)
+
+```
+mkdir -p /usr/local/prometheus/node_exporter
+
+cd /usr/local/prometheus/node_exporter
+
+wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
+
+tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz
+
+```
+
+
+```
+创建Systemd服务
+vim /etc/systemd/system/node_exporter.service
+
+
+
+[Unit]
+Description=node_exporter
+After=network.target
+
+[Service]
+Type=simple
+User=root
+ExecStart=/usr/local/prometheus/node_exporter/node_exporter-0.18.1.linux-amd64/node_exporter
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
+```
+
+- 关于 ExecStart 参数,可以再附带一些启动监控的参数,官网介绍:
+ - 格式:`ExecStart=/usr/local/prometheus/node_exporter/node_exporter-0.18.1.linux-amd64/node_exporter --collectors.enabled meminfo,hwmon,entropy`
+
+
+```
+启动 Node exporter
+systemctl start node_exporter
+
+systemctl daemon-reload
+
+systemctl status node_exporter
+
+```
+
+
+```
+修改prometheus.yml,加入下面的监控目标:
+
+vim /data/docker/prometheus/config/prometheus.yml
+
+scrape_configs:
+ - job_name: 'centos7'
+ static_configs:
+ - targets: ['192.168.1.3:9100']
+ labels:
+ instance: centos7_node1
+
+```
+
+- 重启 prometheus:`docker restart prometheus`
+- Grafana 有现成的 dashboard:
+ -
+ -
+
+----------------------------------------------------------------------------------------------
+
+
+### Nginx 指标
+
+- 这里使用 Nginx VTS exporter:
+
+- 安装 nginx 模块:
+
+```
+git clone --depth=1 https://github.com/vozlt/nginx-module-vts.git
+
+
+编译 nginx 的时候加上:
+./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/opt/nginx-module-vts
+
+make(已经安装过了,就不要再 make install)
+```
+
+
+```
+也有人做好了 docker 镜像:
+https://hub.docker.com/r/xcgd/nginx-vts
+
+docker run --name nginx-vts -p 80:80 -v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -d xcgd/nginx-vts
+```
+
+
+```
+修改Nginx配置
+
+
+http {
+ vhost_traffic_status_zone;
+ vhost_traffic_status_filter_by_host on;
+
+ ...
+
+ server {
+
+ ...
+
+ location /status {
+ vhost_traffic_status_display;
+ vhost_traffic_status_display_format html;
+ }
+ }
+}
+
+
+验证nginx-module-vts模块:http://192.168.1.3/status,会展示:
+Nginx Vhost Traffic Status 统计表
+
+```
+
+```
+如果不想统计流量的server,可以禁用vhost_traffic_status,配置示例:
+server {
+ ...
+ vhost_traffic_status off;
+ ...
+}
+```
+
+
+- 安装 nginx-vts-exporter
+
+```
+官网版本:https://github.com/hnlq715/nginx-vts-exporter/releases
+
+wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
+
+tar zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
+
+chmod +x /usr/local/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter
+```
+
+```
+创建Systemd服务
+vim /etc/systemd/system/nginx_vts_exporter.service
+
+
+[Unit]
+Description=nginx_exporter
+After=network.target
+
+[Service]
+Type=simple
+User=root
+ExecStart=/usr/local/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter -nginx.scrape_uri=http://192.168.1.3/status/format/json
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
+```
+
+
+```
+启动nginx-vts-exporter
+systemctl start nginx_vts_exporter.service
+systemctl daemon-reload
+systemctl status nginx_vts_exporter.service
+```
+
+
+```
+修改 prometheus.yml,加入下面的监控目标:
+vim /data/docker/prometheus/config/prometheus.yml
+
+scrape_configs:
+ - job_name: 'nginx'
+ static_configs:
+ - targets: ['192.168.1.3:9913']
+ labels:
+ instance: nginx1
+
+
+如果nginx 有加 basic auth,则需要这样:
+scrape_configs:
+ - job_name: "nginx"
+ metrics_path: /status/format/prometheus
+ basic_auth:
+ username: youmeek
+ password: '123456'
+ static_configs:
+ - targets: ['192.168.1.3:9913']
+ labels:
+ instance: 'nginx1'
+
+```
+
+- 重启 prometheus:`docker restart prometheus`
+- Grafana 有现成的 dashboard:
+ -
+ -
+
+----------------------------------------------------------------------------------------------
+
+
+
+### 微服务下的多服务收集
+
+-
+
+----------------------------------------------------------------------------------------------
+
+
+### 告警
+
+-
+-
+
+- 告警配置
+
+- 告警检测
+
+- [Grafana+Prometheus系统监控之邮件报警功能](https://blog.52itstyle.vip/archives/2014/)
+- [Grafana+Prometheus系统监控之钉钉报警功能](https://blog.52itstyle.vip/archives/2029/)
+- [Grafana+Prometheus系统监控之webhook](https://blog.52itstyle.vip/archives/2068/)
+
+
+## 远端存储方案
+
+-
+
+
+----------------------------------------------------------------------------------------------
+
+
+## 其他资料
+
+-
+ - 写得非常非常非常好
+-
+-
+- <>
+- <>
+- <>
+- <>
+- <>
+
diff --git a/markdown-file/SkyWalking-Install-And-Settings.md b/markdown-file/SkyWalking-Install-And-Settings.md
index ad6cd074..db9cf77c 100644
--- a/markdown-file/SkyWalking-Install-And-Settings.md
+++ b/markdown-file/SkyWalking-Install-And-Settings.md
@@ -146,22 +146,21 @@ FROM openjdk:8-jre-alpine
LABEL maintainer="tanjian20150101@gmail.com"
-ENV SW_APPLICATION_CODE=java-agent-demo \
- SW_COLLECTOR_SERVERS=localhost:11800
+ENV SW_AGENT_NAMESPACE=java-agent-demo \
+ SW_AGENT_COLLECTOR_BACKEND_SERVICES=localhost:11800
-COPY skywalking-agent /apache-skywalking-apm-incubating/agent
+COPY skywalking-agent /apache-skywalking-apm-bin/agent
COPY target/sky-demo-1.0-SNAPSHOT.jar /demo.jar
-ENTRYPOINT java -javaagent:/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -Dskywalking.collector.backend_service=${SW_COLLECTOR_SERVERS} \
--Dskywalking.agent.application_code=${SW_APPLICATION_CODE} -jar /demo.jar
+ENTRYPOINT java -javaagent:/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar /demo.jar
```
- 构建镜像:
```
docker build -t hello-demo .
-docker run -p 10101:10101 -e SW_APPLICATION_CODE=hello-world-demo-005 -e SW_COLLECTOR_SERVERS=127.10.0.2:11800 hello-demo
+docker run -p 10101:10101 -e SW_AGENT_NAMESPACE=hello-world-demo-005 -e SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.10.0.2:11800 hello-demo
```
diff --git a/markdown-file/WordPress-Install-And-Settings.md b/markdown-file/WordPress-Install-And-Settings.md
index 39fdc9c2..c11835da 100644
--- a/markdown-file/WordPress-Install-And-Settings.md
+++ b/markdown-file/WordPress-Install-And-Settings.md
@@ -194,6 +194,19 @@ systemctl enable httpd.service
- 我是托管到 DNSPOD,重新指向到新 IP 地址即可
+## 常用插件
+
+- JP Markdown
+- WP Code Highlight.js
+- FooBox Image Lightbox
+- WP Super Cache
+
+## 常见问题
+
+- 安装插件出现:`WordPress需要访问您网页服务器的权限。 请输入您的FTP登录凭据以继续`
+- 解决办法:`chown -R apache:apache /var/www/html`
+
+
## 资料
-
diff --git a/markdown-file/monitor.md b/markdown-file/monitor.md
index 50574c9f..9a825839 100644
--- a/markdown-file/monitor.md
+++ b/markdown-file/monitor.md
@@ -858,11 +858,12 @@ access_log /home/wwwlogs/hicrew.log special_main;
#### 一次 JVM 引起的 CPU 高排查
- 使用 `ps -ef | grep java`,查看进程 PID
- - 根据高 CPU 的进程 PID,查看其线程 CPU 使用情况:`top -Hp PID`,找到占用 CPU 资源高的线程 PID
-- 保存堆栈情况:`jstack -l PID >> /opt/jstack-tomcat1-PID-20181017.log`
-- 把占用 CPU 资源高的线程十进制的 PID 转换成 16 进制:`printf "%x\n" PID`,比如:`printf "%x\n" 12401` 得到结果是:`3071`
+ - 根据高 CPU 的进程 PID,查看其线程 CPU 使用情况:`top -Hp PID`,找到占用 CPU 资源高的线程 TID
+ - 也可以用:`ps -mp PID -o THREAD,tid,time`
+- 保存堆栈情况:`jstack -l TID >> /opt/jstack-tomcat1-TID-20181017.log`
+- 把占用 CPU 资源高的线程十进制的 TID 转换成 16 进制:`printf "%x\n" TID`,比如:`printf "%x\n" 12401` 得到结果是:`3071`
- 在刚刚输出的那个 log 文件中搜索:`3071`,可以找到:`nid=0x3071`
-- 也可以在终端中直接看:`jstack PID |grep 十六进制线程 -A 30`,此时如果发现如下:
+- 也可以在终端中直接看:`jstack TID |grep 十六进制线程 -A 30`,此时如果发现如下:
```
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007fd0ac01f000 nid=0x66f runnable
diff --git a/markdown-file/wrk-Install-And-Settings.md b/markdown-file/wrk-Install-And-Settings.md
index 0b96c3c7..f6b7c67f 100644
--- a/markdown-file/wrk-Install-And-Settings.md
+++ b/markdown-file/wrk-Install-And-Settings.md
@@ -26,19 +26,19 @@ sudo cp wrk /usr/local/bin
## 使用
-- 启用 10 个线程,每个线程发起 100 个连接,持续 15 秒:`wrk -t10 -c100 -d15s http://www.baidu.com`
+- 启用 10 个线程,每个线程发起 100 个连接,持续 30 秒:`wrk -t10 -c100 -d30s http://www.baidu.com`
- 最终报告:
```
-Running 15s test @ http://www.baidu.com
- 10 threads and 100 connections
+Running 30s test @ http://www.baidu.com
+ 5 threads and 5 connections
Thread Stats Avg Stdev Max +/- Stdev
- Latency 208.39ms 324.00ms 1.91s 87.70%
- Req/Sec 82.68 64.81 414.00 70.60%
- 11345 requests in 15.02s, 166.51MB read
- Socket errors: connect 0, read 20, write 0, timeout 59
-Requests/sec: 755.26
-Transfer/sec: 11.08MB
+ Latency 44.59ms 17.41ms 331.91ms 95.66%
+ Req/Sec 23.11 5.77 30.00 57.04%
+ 3439 requests in 30.03s, 50.47MB read
+ Socket errors: connect 0, read 10, write 0, timeout 0
+Requests/sec: 114.52
+Transfer/sec: 1.68MB
```
#### 使用 lua 脚本(发送一个 post 请求)
@@ -62,4 +62,4 @@ wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
## 资料
-
--
\ No newline at end of file
+-