- What is OpenResty XRay?
- Installation and Deployment
- How do I deploy and install OpenResty XRay for my application?
- Which operating systems do we support?
- Do I need a very new Linux kernel?
- Can I use my own Linux kernel?
- Is self-compiled kernel supported?
- What applications and programming languages does OpenResty XRay support?
- Can the OpenResty XRay agent analyze applications running on AWS EKS?
- Can I use OpenResty XRay on local virtual machines like VMWare/VirtualBox/KVM/etc.?
- Can I run OpenResty XRay on public cloud virtual machines?
- Does the agent need a C compiler toolchain installed?
- How is the OpenResty XRay agent deployed on K8s?
- Agent Usage and Management
- Data Security
- Debug Symbols and Analysis Capabilities
- Other Questions
ð What is OpenResty XRay?
ð What is OpenResty XRay?
OpenResty XRay is a dynamic tracing product that can analyze various cloud and server applications in real-time. It treats running processes and containers as read-only databases and extracts necessary information to resolve performance issues, anomalies, errors, and security vulnerabilities. OpenResty XRay has a knowledge base, an inference engine, and hundreds of advanced analyzers that can diagnose and narrow down the root causes of deep issues without changing or affecting the target application.
ð Who should use OpenResty XRay?
DevOps can use OpenResty XRay to quickly discover any issues or identify the root causes, then forward the discovered issues and generate automatic reports to developers.
Development teams can also use OpenResty XRay to check for any regression issues during daily development or before the release of new software products.
ð Can OpenResty XRay analyze applications not running on OpenResty?
Of course! OpenResty XRay is a universal platform that can analyze any software. Well, at least the software you control (such as having access to DWARF debug symbols, source code, etc.).
However, OpenResty XRay currently works best with the OpenResty and Nginx technology stacks. Let us know which open-source software you would like OpenResty XRay to support next!
ð Does OpenResty XRay require any changes to my application?
No! OpenResty XRay uses advanced dynamic tracing technology and does not require cooperation from the target application. It is 100% non-intrusive.
- We do not require plugins or modules to be added to your application.
- We do not need to patch your application's code.
- We do not require special compilation or startup options (when compiling C/C++ programs, you do need the
-g
option to send DWARF data, but this is very standard practice). - We do not inject any code into your application processes.
Using OpenResty XRay analyzers will not harm your application processes or even cause them to crash, as we do not add anything to your processes.
ð Is there a personal version available for individual use?
Yes, there is! As long as the personal version is not used for any company, government, or other commercial purposes. However, we usually do not provide SLA for the personal version.
ð Installation and Deployment
ð How do I deploy and install OpenResty XRay for my application?
You need to install and run the OpenResty XRay agent program on the server with your application or container. The agent program is a standalone daemon that can inspect all applications on the same server. It also acts as a client for the OpenResty XRay web console.
There are several ways to install the OpenResty XRay agent.
- Install the RPM or Deb package repository we provide for the respective Linux distribution.
- Install a large
.tar.gz
package containing all the RPM or Deb packages we provide for your Linux distribution. - Install our official Docker or Kubernetes (K8s) container images.
A common mistake is installing the agent in your own container. This will always fail because your container will almost always lack the permissions or filesystem access needed for the agent to inspect other processes and containers.
ð Which operating systems do we support?
Ubuntu 24.04 noble, Ubuntu 22.04 Jammy, Ubuntu 20.04 Focal, Ubuntu 18.04 Bionic, Debian 12 Bookworm, Debian 11 Bullseye, Debian 10 Buster, Debian 9 Stretch, Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 7, Rocky Linux 9, Rocky Linux 8, AlmaLinux 9, AlmaLinux 8, Cent OS 8, Cent OS 7, Cent OS 6, Fedora 36, Fedora 35, Fedora 34, Fedora 33, Fedora 32, Amazon Linux 2023, Amazon Linux 2, Amazon Linux 1, Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, Tencent Linux 3, Tencent Linux 2, OpenSUSE 15, Kylin 10, Kylin 7, CBL-Mariner 2
Our official Docker or K8s container images can run on any modern Linux distribution that supports containers, as long as the Linux distribution used within the target application containers is on the supported list.
If you want to run the OpenResty XRay agent service natively, we support most mainstream Linux distributions. Please check the latest distribution support list for details.
If you have a new Linux distribution that needs native support, please contact us: info@openresty.com!
In the future, we may also support non-Linux operating systems such as Android, macOS, *BSD, and Microsoft Windows.
ð Do I need a very new Linux kernel?
No! We support older kernels, such as the 3.10 kernel of CentOS 7. But we do not support older kernels like the 2.6 kernel of CentOS 6.
ð Can I use my own Linux kernel?
Yes! But you need to contact our team so that we can index your kernel in the software package database and thoroughly test its compatibility with our product. We do not yet support automatic indexing of custom or unknown kernels. We may consider adding this support in the future.
ð Is self-compiled kernel supported?
Yes, you need to upload the relevant kernel packages. The specific kernel packages required can be referenced on the upload page of the OpenResty XRay Console.
ð What applications and programming languages does OpenResty XRay support?
Supported programming languages and runtimes: Python, Java, Rust, Perl, PHP, Erlang, Ruby, Go, LuaJIT, C/C++ Supported servers and proxies: OpenResty, Envoy, Kong, CockroachDB, Nginx,
ð Can the OpenResty XRay agent analyze applications running on AWS EKS?
Yes.
ð Can I use OpenResty XRay on local virtual machines like VMWare/VirtualBox/KVM/etc.?
Yes! All such full-system virtualization technologies should work out of the box with OpenResty XRay. If not, please report it to us.
Please note that installing our agent inside your own Docker or K8s containers is not supported. But you can always use our official Docker and K8s container images to install the agent.
ð Can I run OpenResty XRay on public cloud virtual machines?
Yes! For example, Microsoft Azure, Google Cloud (GCP), Amazon Cloud (AWS), or Digital Ocean. Virtualized cloud servers are fine. Physical machines are not required.
ð Does the agent need a C compiler toolchain installed?
No. Unlike those open-source dynamic tracing frameworks like SystemTap or eBPF/BCC, OpenResty XRay does not require any C or C++ compiler toolchain to be installed on the target machine. No gcc, no clang, nothing. Also, it does not require any Linux kernel headers to be installed.
ð How is the OpenResty XRay agent deployed on K8s?
The OpenResty XRay Agent is usually deployed in a DaemonSet manner in Kubernetes environments.
ð Agent Usage and Management
ð How much overhead does the agent have?
We strive to minimize the performance impact of the agent program on your servers marked as "production". The agent uses an event-driven sampling method, so it does not constantly try to collect data, only when there is a real need. When not sampling, the additional overhead generated by all your processes is strictly 0. This is due to the truly non-intrusive nature of dynamic tracing. Even when sampling, the overhead of most of our analyzers should be less than 5% of your application. Even for those tools that are originally more expensive, the system will try to automatically adjust the frequency and process range of these analyzers to minimize the impact.
If you do not mark your servers as "production" in the web console, the system will consider them as development or test environments. Therefore, it will no longer be cautious about resource usage, and all analyzers will run at full speed so that you can get results as soon as possible.
ð Do I need to restart my processes after installing the agent?
No! One of the advantages of dynamic tracing technology is post-analysis. You do not need to restart your application or any existing processes for the newly installed OpenResty XRay agent to analyze. We can do this because we do not require any new plugins, new startup options, or code injection into your application. It is pollution-free and non-intrusive.
We understand that you may have some processes that have entered some rare states, and restarting them would make the problem disappear. This is why post-analysis and debugging are so critical.
ð How can I stop the agent?
To stop the OpenResty XRay agent service, simply run the following shell command.
sudo systemctl stop orxray-agent
But this is only temporary. If the system restarts or reboots, the agent service will start again. To stop it permanently, you can also run this command after running the previous command.
sudo systemctl disable orxray-agent
For containerized agent services, you can stop the agent container instance with Docker or Kubernetes.
ð How do I restart the agent?
To restart your agent, simply run the command.
sudo systemctl restart orxray-agent
Wait a few minutes, and the new agent instance will take effect.
ð My agent is not working, what should I do?
Sometimes, due to network or hard disk issues, the agent cannot work properly. In this case, check the error log files in the directory.
/usr/local/orxray-agent/logs/
If you need help with the errors in the error log files, please feel free to contact us.
ð How to run OpenResty XRay to analyze memory, CPU, etc.?
To run OpenResty XRay to analyze memory, CPU, etc., you can use its guided analysis features. For detailed operation steps and related cases, please refer to the series of articles on XRay online analysis of memory and high CPU issues on the official OpenResty blog.
ð Can the agent analyze private software?
Yes, if you have written private software. For example, if you do not have permission from other vendors, you should not analyze their proprietary software. However, if you have written the software or have access to the source code and have permission to compile it, then it is fine. You can even use our Y language (lang) to write advanced analyzers for your program. Make sure you compile private software with DWARF data (or "debug symbols"). For example, C/C++ programs should be compiled with the g
or g3
option when using gcc
or g++
. Compiling with DWARF symbols has no impact on the runtime performance of the program, and most mainstream Linux distributions do this by default in their standard packages.
However, DWARF data is not always required. Some basic analyzers in OpenResty XRay do not require "debug symbols" to work. We once helped a customer accurately locate a memory leak in a third-party proprietary library at the C/C++ function level. But make sure you comply with third-party licensing requirements.
ð Data Security
ð What data does the agent collect?
The OpenResty XRay agent program only collects basic data used to analyze performance issues, troubleshoot stability and behavioral issues, and scan for security vulnerabilities. We never collect any potentially sensitive data from your business-level code. We also implement safeguards to prevent accidentally collecting sensitive data from data sources so that it does not leak outside your application processes.
ð How do you handle the data collected by the agent?
We are very careful to protect our customers' data and privacy. This is our top priority. When transmitting all data to our web console, we always use industry-standard encryption methods (such as TLS). Our web console's data storage and management also comply with all SOC 2 guidelines. Only the raw data of the last 2 weeks is stored in our web console (higher-level report data is stored for a longer period). If some customers have shorter data lifecycle requirements, we can also accommodate them.
ð Will you sell or share our data?
No, never. We will not sell your data to any third party. We may only share some audited and obfuscated data with some of our external contractors. And all our contractors must sign a non-disclosure agreement (NDA) with us.
ð Can I avoid uploading any data to your console?
Yes! We offer a self-hosted version of OpenResty XRay for companies with strict data handling policies. It is more expensive than the cloud version. For the On-Premise version, users deploy the web console in their own environment; therefore, no data is uploaded to OpenResty Inc.'s servers.
ð Debug Symbols and Analysis Capabilities
ð Do I need to install debug symbol packages on all my servers?
No. OpenResty XRay indexes all the debug symbols it finds in a remote database called package database. Whenever the agent finds a binary executable, it automatically queries the corresponding debug symbols in the package database.
We run crawlers to continuously obtain debug symbols (or DWARF data) for public software packages on the internet. We also automatically index users' own DWARF data and debug symbols. Each OpenResty XRay tenant has its own independent software package database to protect privacy. If you compile the software yourself, make sure you have an offline (or online) machine with all the software binaries and debug symbols installed and let the OpenResty XRay agent run there (at least for a while). Once the DWARF data and binary programs are indexed into the user's software package database, the user can get rid of the debug symbols on all their machines.
ð OpenResty XRay says my program lacks debug symbols, what should I do?
If the program is self-compiled, try to find the debug symbol package related to your main software package (such as *-debuginfo
packages on RPM-based distributions, *-dbgsym.ddeb
or *-dbgsym.deb
files on Deb-based distributions). Install the debuginfo package on a machine with the agent installed and running, and wait for the agent to index the debug symbols.
Suppose your program was compiled without debug symbols, or you cannot find the corresponding debuginfo package. In that case, you can try recompiling your program with debug symbols enabled (for C/C++ programs, pass the -g
or -g3
option in the compiler command line). Also, ensure your packaging scripts generate a debuginfo package (such as *-debuginfo*.rpm
or *-dbgsym.deb
) instead of discarding the debug symbols.
We understand that finding debug symbols can sometimes be a hassle. We are developing an AI system that can automatically reconstruct DWARF data for similar but not identical binary programs from existing DWARF data. Once this is ready, OpenResty XRay will be able to thoroughly analyze a large number of open-source software binaries that lack debug symbols.
It is worth mentioning that some basic analyzers in OpenResty XRay do not require "debug symbols" to work. In fact, we once helped a customer accurately locate a memory leak in a third-party proprietary library at the C/C++ function level.
ð Can I write my own analyzers?
Yes! You can use our Y language (or Ylang) to write your own analyzers. Ylang is a large subset of the C programming language with our own dynamic tracing extensions. We also provide the Ylua language, which is a subset of the Lua language with extensions, and YSQL, a SQL dialect.
ð Other Questions
ð Do these kernel messages have any impact?
ð vsyscall read attempt denied
After starting live recording, the kernel may throw messages like the one below. This message is harmless and can be ignored.
[29389.731303] redis-server[298169] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:7f000013d241 cs:33 sp:2aaacbcf6f08 ax:0 si:7f00003db659 di:ffffffffff600000
ð How many accounts does 1 License support?
1 License supports 2 account logins.
ð How to configure HTTP proxy for OpenResty XRay?
If your OpenResty XRay Agent is deployed in an environment that requires accessing the public network through an HTTP proxy, you can configure and use the HTTP proxy by following the steps in this document.
- OpenResty XRay æ¯ä»ä¹ïŒ
- å®è£
äžéšçœ²
- åŠäœäžºæçåºçšçšåºéšçœ²å®è£ OpenResty XRayïŒ
- æä»¬æ¯æåªäºæäœç³»ç»ïŒ
- éèŠéåžžæ°ç Linux å æ žåïŒ
- æå¯ä»¥äœ¿çšæèªå·±ç Linux å æ žåïŒ
- æ¯åŠæ¯æèªçŒè¯å æ žïŒ
- OpenResty XRay æ¯æåªäºåºçšåçŒçšè¯èšïŒ
- OpenResty XRay agent èœåŠåæ AWS EKS äžè¿è¡çåºçšïŒ
- æå¯ä»¥åš VMWare/VirtualBox/KVM/ çæ¬å°èææºäžäœ¿çš OpenResty XRay åïŒ
- æå¯ä»¥åšå ¬æäºèææºäžè¿è¡ OpenResty XRay åïŒ
- agent éèŠå®è£ C çŒè¯åšå·¥å ·éŸåïŒ
- OpenResty XRay agent æ¯åŠäœéšçœ²åš K8s äžçïŒ
- agent 䜿çšäžç®¡ç
- æ°æ®å®å š
- è°è¯ç¬Šå·äžåæèœå
- å ¶ä»é®é¢
ð OpenResty XRay æ¯ä»ä¹ïŒ
ð OpenResty XRay æ¯ä»ä¹ïŒ
OpenResty XRay æ¯äžäžªåšæè¿œèžªäº§åïŒå®å¯ä»¥å®æ¶åæåç§äºåæå¡åšåºçšçšåºãå®å°è¿è¡äžçè¿çšå容åšè§äžºåªè¯»æ°æ®åºïŒå¹¶æåå¿ èŠçä¿¡æ¯æ¥è§£å³æ§èœé®é¢ãåŒåžžãé误åå®å šæŒæŽãOpenResty XRay æ¥æç¥è¯åºãæšçåŒæåæ°çŸäžªé«çº§åæåšïŒå¯ä»¥åšäžæ¹åæåœ±åç®æ åºçšçšåºçæ åµäžè¯æåçŒ©å°æ·±å±é®é¢çæ ¹æºã
ð è°åºè¯¥äœ¿çš OpenResty XRayïŒ
DevOps å¯ä»¥å©çš OpenResty XRay å¿«éåç°ä»»æé®é¢ææŸåºé®é¢æ ¹æºïŒç¶åå°åç°çé®é¢åçæçèªåšæ¥å蜬åç»åŒå人åã
åŒåå¢éä¹å¯ä»¥å©çš OpenResty XRay æ¥æ£æ¥æ¥åžžåŒåäžææ°ç蜯件产åååžåçä»»äœååœé®é¢ã
ð OpenResty XRay å¯ä»¥åæäžåš OpenResty äžè¿è¡çåºçšçšåºåïŒ
åœç¶ïŒOpenResty XRay æ¯äžäžªéçšå¹³å°ïŒå¯ä»¥åæä»»äœèœ¯ä»¶ã奜å§ïŒè³å°æ¯æšæ§å¶çèœ¯ä»¶ïŒæ¯åŠæšå¯ä»¥è®¿é® DWARF çè°è¯ç¬Šå·ïŒæºä»£ç çïŒã
äžè¿ïŒOpenResty XRay ç®ååæ OpenResty å Nginx ææ¯æ çæææå¥œãåè¯æä»¬æšåžæ OpenResty XRay å°œå¿«æ¯æçåŒæºèœ¯ä»¶ïŒ
ð OpenResty XRay éèŠä»¥ä»»äœæ¹åŒæ¹åæçåºçšçšåºåïŒ
äžïŒOpenResty XRay 䜿çšå è¿çåšæè¿œèžªææ¯ïŒäžéèŠç®æ åºçšçšåºçåäœã宿¯ 100% éäŸµå ¥çã
- æä»¬äžèŠæ±åšæšçåºçšçšåºäžæ·»å æä»¶ææš¡åã
- æä»¬äžéèŠå¯¹æšçåºçšçšåºçä»£ç æäžè¡¥äžã
- æä»¬äžéèŠç¹æ®ççŒè¯æå¯åšé项ïŒå¥œå§ïŒåšçŒè¯ C/C++ çšåºæ¶ïŒæšç¡®å®éèŠ
-g
é项æ¥åé DWARF æ°æ®ïŒäœè¿æ¯éåžžæ åçåæ³ïŒã - æä»¬äžåæšçåºçšçšåºè¿çšæ³šå ¥ä»»äœä»£ç ã
äœ¿çš OpenResty XRay åæåšäžäŒä»¥ä»»äœæ¹åŒæå®³æšçåºçšçšåºè¿çšçè³äœ¿å ¶åŽ©æºïŒå 䞺æä»¬äžäŒåæšçè¿çšæ·»å ä»»äœäžè¥¿ã
ð æ¯åŠææäŸäžªäººäœ¿çšç䞪人çïŒ
æ¯çææäŸïŒåªèŠäžªäººçäžçšäºä»»äœå ¬åžãæ¿åºæå ¶ä»åäžçšéãäžè¿ïŒæä»¬éåžžäžäžºäžªäººçæäŸ SLAã
ð å®è£ äžéšçœ²
ð åŠäœäžºæçåºçšçšåºéšçœ²å®è£ OpenResty XRayïŒ
æšéèŠåšè£ æåºçšçšåºæå®¹åšçæå¡åšäžå®è£ å¹¶è¿è¡ OpenResty XRay agent çšåºãagent çšåºæ¯äžäžªç¬ç«ç宿€è¿çšïŒå¯ä»¥æ£æ¥æšåšåäžæå¡åšäžçææåºçšçšåºãå®ä¹æ¯äœäžº OpenResty XRay web æ§å¶å°çäžäžªå®¢æ·ç«¯ã
æå ç§æ¹æ³æ¥å®è£ OpenResty XRay agentã
- å®è£ æä»¬äžºçžåºç Linux åè¡çæäŸç RPM æ Deb 蜯件å åºã
- å®è£
äžäžªå€§ç
.tar.gz
å ïŒå ¶äžå å«æä»¬äžºæšç Linux åè¡çæäŸçææ RPM æ Deb å ã - å®è£ æä»¬ç宿¹ Docker æ KubernetesïŒK8sïŒå®¹åšéåã
äžäžªåžžè§çé误æ¯åšæšèªå·±ç容åšäžå®è£ agentãè¿æ»äŒå€±èŽ¥çïŒå 䞺æšç容åšåºæ¬æ»äŒçŒºä¹æéææä»¶ç³»ç»è®¿é®æïŒäœ¿ agent æ æ³æ£æ¥å ¶ä»è¿çšå容åšã
ð æä»¬æ¯æåªäºæäœç³»ç»ïŒ
Ubuntu 24.04 noble, Ubuntu 22.04 Jammy, Ubuntu 20.04 Focal, Ubuntu 18.04 Bionic, Debian 12 Bookworm, Debian 11 Bullseye, Debian 10 Buster, Debian 9 Stretch, Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 7, Rocky Linux 9, Rocky Linux 8, AlmaLinux 9, AlmaLinux 8, Cent OS 8, Cent OS 7, Cent OS 6, Fedora 36, Fedora 35, Fedora 34, Fedora 33, Fedora 32, Amazon Linux 2023, Amazon Linux 2, Amazon Linux 1, Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, Tencent Linux 3, Tencent Linux 2, OpenSUSE 15, Kylin 10, Kylin 7, CBL-Mariner 2
æä»¬ç宿¹ Docker æ K8s 容åšéåå¯ä»¥åšä»»äœæ¯æå®¹åšçç°ä»£ Linux åè¡çäžè¿è¡ïŒåªèŠè¿äºç®æ åºçšå®¹åšå 䜿çšç Linux åè¡çåš æ¯æå衚 å ã
åŠææšæ³åçè¿è¡ OpenResty XRay ç agent æå¡ïŒæä»¬æ¯æ¯æå€§å€æ°äž»æµ Linux åè¡ççã请æ¥çææ°ç åè¡çæ¯æå衚 äºè§£è¯Šæ ã
åŠææšææ°ç Linux åè¡çéèŠåçæ¯æïŒè¯·èç³»æä»¬ïŒinfo@openresty.com!
以åæä»¬å¯èœä¹äŒæ¯æé Linux æäœç³»ç»ïŒåŠ AndroidãmacOSã*BSD å Microsoft Windows çã
ð éèŠéåžžæ°ç Linux å æ žåïŒ
äžéèŠïŒæä»¬æ¯ææ§çå æ žïŒåŠ CentOS 7 ç 3.10 å æ žãäœäžæ¯æå CentOS 6 ç 2.6 è¿æ ·çæ§å æ žã
ð æå¯ä»¥äœ¿çšæèªå·±ç Linux å æ žåïŒ
å¯ä»¥ïŒäœæšéèŠèç³»æä»¬çå¢éïŒä»¥äŸ¿æä»¬èœå€åšèœ¯ä»¶å æ°æ®åºäžçŽ¢åŒæšçå æ žïŒå¹¶åœ»åºæµè¯å®ä»¬äžæä»¬äº§åçå Œå®¹æ§ãæä»¬è¿äžæ¯æå¯¹èªå®ä¹ææªç¥å æ žçèªåšçŽ¢åŒãæä»¬å¯èœäŒèèåšæªæ¥å¢å è¿äžæ¯æã
ð æ¯åŠæ¯æèªçŒè¯å æ žïŒ
æ¯æïŒéèŠäžäŒ çžå ³çå æ žå ãå ·äœéèŠçå æ žå å¯ä»¥åè OpenResty XRay Console çäžäŒ 页é¢ã
ð OpenResty XRay æ¯æåªäºåºçšåçŒçšè¯èšïŒ
æ¯æççŒçšè¯èšäžè¿è¡æ¶ïŒPython, Java, Rust, Perl, PHP, Erlang, Ruby, Go, LuaJIT, C/C++ æ¯æçæå¡åšäžä»£çïŒOpenResty, Envoy, Kong, CockroachDB, Nginx,
ð OpenResty XRay agent èœåŠåæ AWS EKS äžè¿è¡çåºçšïŒ
æ¯æã
ð æå¯ä»¥åš VMWare/VirtualBox/KVM/ çæ¬å°èææºäžäœ¿çš OpenResty XRay åïŒ
å¯ä»¥ïŒææè¿æ ·çå šç³»ç»èæåææ¯éœåºè¯¥å¯ä»¥äž OpenResty XRay äžèµ·åŒç®±å·¥äœãåŠæäžèœïŒè¯·åæä»¬æ¥åã
请泚æïŒäžæ¯æåšæšèªå·±ç Docker æ K8s 容åšå å®è£ æä»¬ç agentãäœæšå¯ä»¥éæ¶äœ¿çšæä»¬ç宿¹ Docker å K8s 容åšé忥å®è£ agentã
ð æå¯ä»¥åšå ¬æäºèææºäžè¿è¡ OpenResty XRay åïŒ
å¯ä»¥ïŒæ¯åŠåŸ®èœ¯ Azureãè°·æäºïŒGCPïŒãäºé©¬éäºïŒAWSïŒæ Digital Oceanãèæåçäºæå¡åšéœå¯ä»¥ãäžæ¯äžå®èŠç©çæºã
ð agent éèŠå®è£ C çŒè¯åšå·¥å ·éŸåïŒ
äžéèŠãäžé£äºåŒæºçåšæè¿œèžªæ¡æ¶åŠ SystemTap æ eBPF/BCC äžåïŒOpenResty XRay äžèŠæ±åšç®æ æºåšäžå®è£ ä»»äœ C æ C++ çŒè¯åšå·¥å ·éŸã没æ gccïŒæ²¡æ clangïŒä»ä¹éœæ²¡æãæ€å€ïŒå®äžéèŠå®è£ ä»»äœ Linux å æ žå€Žæä»¶ã
ð OpenResty XRay agent æ¯åŠäœéšçœ²åš K8s äžçïŒ
OpenResty XRay Agent åš Kubernetes ç¯å¢äžéåžžéçš DaemonSet çæ¹åŒè¿è¡éšçœ²ã
ð agent 䜿çšäžç®¡ç
ð agent çåŒéå€å€§ïŒ
æä»¬å°œéå° agent çšåºå¯¹æšæ 记䞺âç产âçæå¡åšçæ§èœåœ±åéå°æäœãagent 䜿çšäºä»¶è§Šåçéæ ·æ¹æ³ïŒå æ€å®äžäŒäžçŽè¯åŸæ¶éæ°æ®ïŒåªæ¯åšæçæ£éèŠçæ¶åææ¶éãåœäžéæ ·æ¶ïŒæšçææè¿çšäž¥æ Œæä¹äžäº§ççé¢å€åŒéæ¯ 0ãè¿æ¯ç±äºåšæè¿œèžªççæ£éäŸµå ¥æ§ãå³äœ¿åšéæ ·æ¶ïŒæä»¬å€§å€æ°çåæåšçåŒéä¹åºè¯¥å°äºæšçåºçšç5%ãå³äœ¿æ¯é£äºåæ¬åŒéæ¯èŸæè޵çå·¥å ·ïŒç³»ç»ä¹äŒå°è¯èªåšè°æŽè¿äºåæåšçé¢çåè¿çšèåŽïŒä»¥å°œéåå°åœ±åã
åŠææšäžåš web æ§å¶å°äžææšçæå¡åšæ 记䞺âç产âïŒç³»ç»äŒè®€äžºå®ä»¬æ¯åŒåææµè¯ç¯å¢ãå æ€ïŒå®å°äžåå¯¹èµæºçäœ¿çšæè°šæ æåºŠïŒææçåæåšå°å šéè¿è¡ïŒä»¥äŸ¿æšèœå°œå¿«åŸå°ç»æã
ð å®è£ agent åïŒæéèŠéæ°å¯åšæçè¿çšåïŒ
äžéèŠïŒåšæè¿œèžªææ¯çäžäžªäŒç¹æ¯äºååæãæšäžéèŠéæ°å¯åšæšçåºçšçšåºæä»»äœç°æçè¿çšïŒè®©æ°å®è£ ç OpenResty XRay agent è¿è¡åæãæä»¬å¯ä»¥åå°è¿äžç¹ïŒå 䞺æä»¬äžéèŠä»»äœæ°çæä»¶ãæ°çå¯åšé项ïŒä¹äžéèŠåæšçåºçšçšåºæ³šå ¥ä»»äœä»£ç ã宿¯æ 污æåéäŸµå ¥çã
æä»¬çè§£ïŒæšå¯èœæäžäºè¿çšè¿å ¥äºäžäºçœè§çç¶æïŒéæ°å¯åšå®ä»¬äŒäœ¿é®é¢æ¶å€±ãè¿å°±æ¯äžºä»ä¹äºååæåè°è¯æ¯åŠæ€å ³é®ã
ð æææ ·æèœåæ¢ agentïŒ
èŠåæ¢ OpenResty XRay agent æå¡ïŒåªéè¿è¡ä»¥äž shell åœä»€ã
sudo systemctl stop orxray-agent
äœè¿åªæ¯ææ¶çãåŠæç³»ç»éæ°å¯åšæéå¯ïŒagent æå¡äŒå次å¯åšãèŠæ°žä¹ 忢å®ïŒæšä¹å¯ä»¥åšè¿è¡åäžäžªåœä»€ååè¿è¡è¿äžªåœä»€ã
sudo systemctl disable orxray-agent
对äºå®¹åšåç agent æå¡ïŒæšå¯ä»¥çš Docker æ Kubernetes 忢 agent 容åšå®äŸã
ð æåŠäœéæ°å¯åš agentïŒ
èŠéæ°å¯åšæšç agentïŒåªéè¿è¡åœä»€
sudo systemctl restart orxray-agent
çåŸ å åéïŒæ°ç agent å®äŸå°±äŒçæã
ð æç agent äžå·¥äœäºïŒæåºè¯¥æä¹åïŒ
æäºæ¶åïŒç±äºçœç»æç¡¬çé®é¢ïŒagent äžèœæ£åžžå·¥äœãåšè¿ç§æ åµäžïŒè¯·æ¥ç该ç®åœäžçé误æ¥å¿æä»¶ã
/usr/local/orxray-agent/logs/
åŠææšå¯¹é误æ¥å¿æä»¶äžçé误è¿éèŠåž®å©ïŒè¯·éæ¶èç³»æä»¬ã
ð åŠäœè¿è¡ OpenResty XRay åæå åãCPU çé®é¢ïŒ
èŠè¿è¡ OpenResty XRay åæå åãCPU çé®é¢ïŒæšå¯ä»¥å©çšå ¶åŒå¯ŒåŒåæåèœã诊ç»çæäœæ¥éª€åçžå ³æ¡äŸïŒè¯·åé OpenResty 宿¹å客äžå ³äº XRay 线äžåæå ååé« CPU é®é¢çç³»åæç« ã
ð agent å¯ä»¥åæç§äººèœ¯ä»¶åïŒ
æ¯çïŒåŠææšçŒåäºç§æèœ¯ä»¶çè¯ãäŸåŠïŒåŠææšæ²¡æåŸå°å
¶ä»äŸåºåç讞å¯ïŒæšå°±äžåºè¯¥åæä»ä»¬çäžæèœ¯ä»¶ãäœæ¯ïŒåŠææšçŒåäºè¿äžªèœ¯ä»¶ïŒæè
ææºäŒæ¥è§Šå°æºä»£ç ïŒå¹¶äžæçŒè¯çæéïŒé£å°±å¯ä»¥äºãèäžæšçè³å¯ä»¥äœ¿çšæä»¬ç Y è¯èšïŒlangïŒæ¥äžºæšççšåºçŒåé«çº§åæåšãè¯·ç¡®ä¿æšçš DWARF æ°æ®ïŒæ "è°è¯ç¬Šå·"ïŒæ¥çŒè¯ç§æèœ¯ä»¶ãäŸåŠïŒC/C++ çšåºåšäœ¿çš gcc
æ g++
æ¶ïŒåºäœ¿çš g
æ g3
é项è¿è¡çŒè¯ãäœ¿çš DWARF 笊å·çŒè¯å¯¹çšåºçè¿è¡æ§èœæ²¡æä»»äœåœ±åïŒå€§å€æ°äž»æµç Linux åè¡çåšå
¶æ å蜯件å
äžéœé»è®€è¿æ ·åã
ç¶èïŒDWARF æ°æ®å¹¶äžæ»æ¯å¿ éçãOpenResty XRay äžäžäºåºæ¬åæåšäžéèŠâè°è¯ç¬Šå·âæ¥å·¥äœãæä»¬æŸç»åž®å©äžäžªå®¢æ·åš C/C++ åœæ°å±é¢äžåç¡®å®äœäºäžäžªç¬¬äžæ¹äžæåºçå åæ³æŒãäœèŠç¡®ä¿æšç¬Šåç¬¬äžæ¹ç讞å¯èŠæ±ã
ð æ°æ®å®å š
ð agent äŒæ¶éåªäºæ°æ®ïŒ
OpenResty XRay agent çšåºåªæ¶éçšäºåææ§èœé®é¢ãæé€çš³å®æ§åè¡äžºäžçé®é¢ä»¥åæ«æå®å šæŒæŽçåºæ¬æ°æ®ãæä»¬ä»äžä»æšçäžå¡çº§ä»£ç äžæ¶éä»»äœæœåšçæææ°æ®ãæä»¬è¿å®æœä¿æ€æªæœïŒä»¥é¿å æå€å°æ¶éæ°æ®æºäžçæææ°æ®ïŒäœ¿å ¶äžäŒæ³é²å°æšçåºçšçšåºè¿çšä¹å€ã
ð äœ ä»¬åŠäœå€ç agent æ¶éçæ°æ®ïŒ
æä»¬éåžžè°šæ å°ä¿æ€æä»¬å®¢æ·çæ°æ®åéç§ãè¿æ¯æä»¬ç第äžèŠå¡ãåšäŒ èŸæææ°æ®å°æä»¬ç web æ§å¶å°æ¶ïŒæä»¬æ»æ¯äœ¿çšå·¥äžæ åçå 坿¹æ³ïŒåŠ TLSïŒãæä»¬ web æ§å¶å°çæ°æ®ååšå管çä¹ç¬Šåææ SOC 2 ååãåªææè¿ 2 åšçåå§æ°æ®åæŸåšæä»¬ç web æ§å¶å°äžïŒæŽé«çº§å«çæ¥åæ°æ®åæŸæ¶éŽæŽé¿äºïŒãåŠææäºå®¢æ·ææŽççæ°æ®çåœåšæèŠæ±ïŒæä»¬ä¹å¯ä»¥æ»¡è¶³ã
ð äœ ä»¬äŒåºå®æå享æä»¬çæ°æ®åïŒ
äžïŒæ°žè¿äžäŒãæä»¬äžäŒææšçæ°æ®åç»ä»»äœç¬¬äžæ¹ãæä»¬åªå¯èœäžæä»¬çäžäºå€éšæ¿å åå享äžäºç»è¿å®¡è®¡åæ··æ·çæ°æ®ãèæä»¬ææçæ¿å åå¿ é¡»äžæä»¬çŸçœ²ä¿å¯åè®®ïŒNDAïŒã
ð æå¯ä»¥é¿å äžäŒ ä»»äœæ°æ®å°äœ ä»¬çæ§å¶å°åïŒ
æ¯çïŒæä»¬äžºæäž¥æ Œçæ°æ®å€çæ¿ççå ¬åžæäŸ OpenResty XRay çèªäž»éšçœ²çæ¬ã宿¯äºçæ¬æŽè޵ã对äºèªäž»éšçœ²çæ¬ïŒçšæ·åšèªå·±çç¯å¢äžéšçœ² web æ§å¶å°ïŒå æ€ïŒæ²¡ææ°æ®äŒè¢«äžäŒ å° OpenResty Inc çæå¡åšäžã
ð è°è¯ç¬Šå·äžåæèœå
ð æéèŠåšæææçæå¡åšäžå®è£ è°è¯ç¬Šå·å åïŒ
äžéèŠãOpenResty XRay åšäžäžªå«å package database çè¿çšæ°æ®åºäžçŽ¢åŒå®åç°çææè°è¯ç¬Šå·ãæ¯åœ agent åç°äžäžªäºè¿å¶ç坿§è¡æä»¶ïŒå®å°±äŒèªåšæ¥è¯¢å æ°æ®åºäžçžåºçè°è¯ç¬Šå·ã
æä»¬è¿è¡ç¬è«çšåºïŒåšäºèçœäžäžçŽè·åå ¬å ±èœ¯ä»¶å çè°è¯ç¬Šå·ïŒæ DWARF æ°æ®ïŒãèäžæä»¬è¿èªåšçŽ¢åŒçšæ·èªå·±ç DWARF æ°æ®åè°è¯ç¬Šå·ãæ¯äžª OpenResty XRay ç§æ·éœæèªå·±ç¬ç«çèœ¯ä»¶å æ°æ®åºä»¥ä¿æ€éç§ãåŠææšèªå·±çŒè¯èœ¯ä»¶ïŒé£ä¹è¯·ç¡®ä¿æšæäžå°çŠ»çº¿ïŒæåšçº¿ïŒçæºåšïŒå®è£ äºææç蜯件äºè¿å¶æä»¶åè°è¯ç¬Šå·ïŒå¹¶äžè®© OpenResty XRay agent åšé£è¿è¡ïŒè³å°æäžæ®µæ¶éŽïŒãäžæŠ DWARF æ°æ®åäºè¿å¶çšåºè¢«çŽ¢åŒå°çšæ·çèœ¯ä»¶å æ°æ®åºäžïŒçšæ·å°±å¯ä»¥åšä»ææçæºåšäžæè±è°è¯ç¬Šå·äºã
ð OpenResty XRay 诎æççšåºçŒºä¹è°è¯ç¬Šå·ïŒæåºè¯¥æä¹åïŒ
åŠæçšåºæ¯èªè¡çŒè¯çïŒè¯çæŸå°äžæšç䞻蜯件å
çžå
³çè°è¯ç¬Šå·å
ïŒæ¯åŠåºäº RPM çåè¡çäžç *-debuginfo
å
ïŒåºäº Deb çåè¡çäžç *-dbgsym.ddeb
æ*-dbgsym.deb
æä»¶ïŒãå° debuginfo å
å®è£
åšäžå°å®è£
å¹¶è¿è¡äº agent çæºåšäžïŒå¹¶çåŸ
agent 对è°è¯ç¬Šå·è¿è¡çŽ¢åŒã
å讟æšççšåºåšçŒè¯æ¶æ²¡æè°è¯ç¬Šå·ïŒæè
æšæŸäžå°çžåºç debuginfo å
ãåšè¿ç§æ
åµäžïŒæšå¯ä»¥å°è¯åšå¯çšè°è¯ç¬Šå·çæ
åµäžéæ°çŒè¯æšççšåºïŒå¯¹äº C/C++ çšåºïŒåšçŒè¯åšåœä»€è¡äžäŒ é -g
æ-g3
é项ïŒãåŠå€ïŒç¡®ä¿æšçæå
èæ¬çæäžäžª debuginfo å
ïŒåŠ *-debuginfo*.rpm
æ*-dbgsym.deb
ïŒïŒèäžæ¯æè°è¯ç¬Šå·äž¢åŒã
æä»¬ç解寻æŸè°è¯ç¬Šå·ææ¶æ¯äžä»¶åŸéº»çŠçäºãæä»¬äžçŽåšåŒåäžäžªäººå·¥æºèœç³»ç»ïŒå¯ä»¥ä»ç°æç DWARF æ°æ®äžèªåšé建çžäŒŒäœäžå®å šçžåçäºè¿å¶çšåºç DWARF æ°æ®ãäžæŠè¿äžªåå€å°±ç»ªïŒOpenResty XRay å°èœå€åœ»åºåæå€§é猺å°è°è¯ç¬Šå·çåŒæºèœ¯ä»¶äºè¿å¶æä»¶ã
åŒåŸäžæçæ¯ïŒOpenResty XRay äžçäžäºåºæ¬åæåšå¹¶äžèŠæ±âè°è¯ç¬Šå·âæ¥å·¥äœãäºå®äžïŒæä»¬æŸç»åž®å©äžäžªå®¢æ·åš C/C++ åœæ°å±é¢äžåç¡®å®äœäºäžäžªç¬¬äžæ¹äžæåºçå åæ³æŒã
ð æå¯ä»¥çŒåèªå·±çåæåšåïŒ
å¯ä»¥ïŒæšå¯ä»¥äœ¿çšæä»¬ç Y è¯èšïŒæ YlangïŒæ¥çŒåæšèªå·±çåæåšãYlang æ¯ C çŒçšè¯èšçäžäžªå€§çåéïŒææä»¬èªå·±çåšæè¿œèžªçæ©å±ãæä»¬è¿æäŸäº Ylua è¯èšïŒè¿æ¯äžäžªåžŠææ©å±ç Lua è¯èšçåéïŒä»¥å YSQLïŒäžäžª SQL æ¹èšã
ð å ¶ä»é®é¢
ð è¿äºå æ žæ¶æ¯æ¯åŠæåœ±å
ð vsyscall read attempt denied
åšå¯åšç°åºåœå¶åïŒå æ žå¯èœäŒæåºç±»äŒŒäžé¢è¿æ ·çæ¶æ¯ãè¿äžªæ¶æ¯æ¯æ 害çïŒå¯ä»¥å¿œç¥ã
[29389.731303] redis-server[298169] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:7f000013d241 cs:33 sp:2aaacbcf6f08 ax:0 si:7f00003db659 di:ffffffffff600000
ð 1 䞪 License æ¯æå€å°äžªèŽŠæ·ç»åœïŒ
1 䞪 License æ¯æ 2 䞪莊å·ç»åœã
ð OpenResty XRay æä¹é 眮 HTTP 代çïŒ
åŠææšç OpenResty XRay Agent éšçœ²åšäžäžªéèŠéè¿ HTTP 代ç访é®å ¬çœçç¯å¢äžïŒæšå¯ä»¥æç §è¯¥ææ¡£çæ¥éª€é 眮åäœ¿çš HTTP 代çã
- OpenResty XRay æ¯ç麌ïŒ
- å®è£èéšçœ²
- åŠäœçºæçæçšçšåŒéšçœ²å®è£ OpenResty XRayïŒ
- æåæ¯æŽåªäºäœæ¥ç³»çµ±ïŒ
- éèŠéåžžæ°ç Linux æ žå¿åïŒ
- æå¯ä»¥äœ¿çšæèªå·±ç Linux æ žå¿åïŒ
- æ¯åŠæ¯æŽèªç·šè¯æ žå¿ïŒ
- OpenResty XRay æ¯æŽåªäºæçšåçšåŒèªèšïŒ
- OpenResty XRay agent èœåŠåæ AWS EKS äžå·è¡çæçšïŒ
- æå¯ä»¥åš VMWare/VirtualBox/KVM/ çæ¬å°èæ¬æ©åšäžäœ¿çš OpenResty XRay åïŒ
- æå¯ä»¥åšå ¬æäºèæ¬æ©åšäžå·è¡ OpenResty XRay åïŒ
- agent éèŠå®è£ C ç·šè¯åšå·¥å ·éåïŒ
- OpenResty XRay agent æ¯åŠäœéšçœ²åš K8s äžçïŒ
- agent 䜿çšè管ç
- è³æå®å š
- é€é¯ç¬Šèèåæèœå
- å ¶ä»åé¡
ð OpenResty XRay æ¯ç麌ïŒ
ð OpenResty XRay æ¯ç麌ïŒ
OpenResty XRay æ¯äžååæ è¿œè¹€ç¢åïŒå®å¯ä»¥å¯Šæåæåçš®é²å䌺æåšæçšçšåŒãå®å°å·è¡äžççšåºå容åšèŠçºåªè®è³æåº«ïŒäžŠæåå¿ èŠçè³èšäŸè§£æ±ºæèœåé¡ãç°åžžãé¯èª€åå®å šæŒæŽãOpenResty XRay ææç¥èåº«ãæšçåŒæåæžçŸåé«éåæåšïŒå¯ä»¥åšäžæ¹è®æåœ±é¿ç®æšæçšçšåŒçæ æ³äžèšºæ·åçž®å°æ·±å±€åé¡çæ ¹æºã
ð 誰æè©²äœ¿çš OpenResty XRayïŒ
DevOps å¯ä»¥å©çš OpenResty XRay å¿«éçŒçŸä»»æå顿æŸåºå顿 ¹æºïŒç¶åŸå°çŒçŸçåé¡åçæçèªåå ±åèœçŒçµŠéçŒäººå¡ã
éçŒåéä¹å¯ä»¥å©çš OpenResty XRay äŸæª¢æ¥æ¥åžžéçŒäžææ°çè»é«ç¢åéåºåçä»»äœåæžåé¡ã
ð OpenResty XRay å¯ä»¥åæäžåš OpenResty äžå·è¡çæçšçšåŒåïŒ
ç¶ç¶ïŒOpenResty XRay æ¯äžåéçšå¹³èºïŒå¯ä»¥åæä»»äœè»é«ã奜å§ïŒè³å°æ¯æšæ§å¶çè»é«ïŒæ¯åŠæšå¯ä»¥èšªå DWARF çé€é¯ç¬ŠèïŒåå§ç¢ŒçïŒã
äžéïŒOpenResty XRay ç®ååæ OpenResty å Nginx æè¡æ£§çæææå¥œãå蚎æåæšåžæ OpenResty XRay åå¿«æ¯æŽçéæºè»é«ïŒ
ð OpenResty XRay éèŠä»¥ä»»äœæ¹åŒæ¹è®æçæçšçšåŒåïŒ
äžïŒOpenResty XRay 䜿çšå é²çåæ è¿œè¹€æè¡ïŒäžéèŠç®æšæçšçšåŒçåäœã宿¯ 100% éäŸµå ¥çã
- æåäžèŠæ±åšæšçæçšçšåŒäžæ°å¢å€æææš¡çµã
- æåäžéèŠå°æšçæçšçšåŒççšåŒç¢Œæäžè£äžã
- æåäžéèŠç¹æ®çç·šè¯æååéžé
ïŒå¥œå§ïŒåšç·šè¯ C/C++ çšåŒæïŒæšç¢ºå¯ŠéèŠ
-g
éžé äŸå³é DWARF è³æïŒäœéæ¯éåžžæšæºçåæ³ïŒã - æåäžåæšçæçšçšåŒçšåºæ³šå ¥ä»»äœçšåŒç¢Œã
äœ¿çš OpenResty XRay åæåšäžæä»¥ä»»äœæ¹åŒæå®³æšçæçšçšåŒçšåºçè³äœ¿å ¶åŽ©æœ°ïŒå çºæåäžæåæšççšåºæ°å¢ä»»äœæ±è¥¿ã
ð æ¯åŠææäŸå人䜿çšçå人çïŒ
æ¯çææäŸïŒåªèŠå人çäžçšæŒä»»äœå ¬åžãæ¿åºæå ¶ä»åæ¥çšéãäžéïŒæåéåžžäžçºå人çæäŸ SLAã
ð å®è£èéšçœ²
ð åŠäœçºæçæçšçšåŒéšçœ²å®è£ OpenResty XRayïŒ
æšéèŠåšè£ææçšçšåŒæå®¹åšç䌺æåšäžå®è£äžŠå·è¡ OpenResty XRay agent çšåŒãagent çšåŒæ¯äžåçšç«çå®è·çšåºïŒå¯ä»¥æª¢æ¥æšåšåäžäŒºæåšäžçæææçšçšåŒãå®ä¹æ¯äœçº OpenResty XRay web æ§å¶æª¯çäžå客æ¶ç«¯ã
æå¹Ÿç𮿹æ³äŸå®è£ OpenResty XRay agentã
- å®è£æåçºçžæç Linux çŒè¡çæäŸç RPM æ Deb è»é«å 庫ã
- å®è£äžå倧ç
.tar.gz
å ïŒå ¶äžå 嫿åçºæšç Linux çŒè¡çæäŸçææ RPM æ Deb å ã - å®è£æåç宿¹ Docker æ KubernetesïŒK8sïŒå®¹åšæ 象ã
äžååžžèŠçé¯èª€æ¯åšæšèªå·±ç容åšäžå®è£ agentãéçžœæå€±æçïŒå çºæšç容åšåºæ¬çžœæçŒºä¹èš±å¯æ¬ææªæ¡ç³»çµ±èšªåæ¬ïŒäœ¿ agent ç¡æ³æª¢æ¥å ¶ä»çšåºå容åšã
ð æåæ¯æŽåªäºäœæ¥ç³»çµ±ïŒ
Ubuntu 24.04 noble, Ubuntu 22.04 Jammy, Ubuntu 20.04 Focal, Ubuntu 18.04 Bionic, Debian 12 Bookworm, Debian 11 Bullseye, Debian 10 Buster, Debian 9 Stretch, Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 7, Rocky Linux 9, Rocky Linux 8, AlmaLinux 9, AlmaLinux 8, Cent OS 8, Cent OS 7, Cent OS 6, Fedora 36, Fedora 35, Fedora 34, Fedora 33, Fedora 32, Amazon Linux 2023, Amazon Linux 2, Amazon Linux 1, Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, Tencent Linux 3, Tencent Linux 2, OpenSUSE 15, Kylin 10, Kylin 7, CBL-Mariner 2
æåç宿¹ Docker æ K8s å®¹åšæ 象å¯ä»¥åšä»»äœæ¯æŽå®¹åšççŸä»£ Linux çŒè¡çäžå·è¡ïŒåªèŠéäºç®æšæçšå®¹åšå §äœ¿çšç Linux çŒè¡çåš æ¯æŽå衚 å §ã
åŠææšæ³åçå·è¡ OpenResty XRay ç agent æåïŒæåæ¯æ¯æŽå€§å€æžäž»æµ Linux çŒè¡ççãè«æª¢èŠææ°ç çŒè¡çæ¯æŽå衚 ç解詳æ ã
åŠææšææ°ç Linux çŒè¡çéèŠåçæ¯æŽïŒè«è¯çµ¡æåïŒinfo@openresty.com!
ä»¥åŸæåå¯èœä¹ææ¯æŽé Linux äœæ¥ç³»çµ±ïŒåŠ AndroidãmacOSã*BSD å Microsoft Windows çã
ð éèŠéåžžæ°ç Linux æ žå¿åïŒ
äžéèŠïŒæåæ¯æŽèçæ žå¿ïŒåŠ CentOS 7 ç 3.10 æ žå¿ãäœäžæ¯æŽå CentOS 6 ç 2.6 éæš£çèæ žå¿ã
ð æå¯ä»¥äœ¿çšæèªå·±ç Linux æ žå¿åïŒ
å¯ä»¥ïŒäœæšéèŠè¯çµ¡æåçåéïŒä»¥äŸ¿æåèœå€ åšè»é«å è³æåº«äžçŽ¢åŒæšçæ žå¿ïŒäžŠåŸ¹åºæž¬è©Šå®åèæåç¢åççžå®¹æ§ãæåéäžæ¯æŽå°èªå®çŸ©ææªç¥æ žå¿çèªå玢åŒãæåå¯èœæèæ ®åšæªäŸå¢å éäžæ¯æŽã
ð æ¯åŠæ¯æŽèªç·šè¯æ žå¿ïŒ
æ¯æŽïŒéèŠäžå³çžéçæ žå¿å ãå ·é«éèŠçæ žå¿å å¯ä»¥åè OpenResty XRay Console çäžå³é é¢ã
ð OpenResty XRay æ¯æŽåªäºæçšåçšåŒèªèšïŒ
æ¯æŽççšåŒèªèšèå·è¡æïŒPython, Java, Rust, Perl, PHP, Erlang, Ruby, Go, LuaJIT, C/C++ æ¯æŽç䌺æåšè代çïŒOpenResty, Envoy, Kong, CockroachDB, Nginx,
ð OpenResty XRay agent èœåŠåæ AWS EKS äžå·è¡çæçšïŒ
æ¯æŽã
ð æå¯ä»¥åš VMWare/VirtualBox/KVM/ çæ¬å°èæ¬æ©åšäžäœ¿çš OpenResty XRay åïŒ
å¯ä»¥ïŒææé暣çå šç³»çµ±èæ¬åæè¡éœæè©²å¯ä»¥è OpenResty XRay äžèµ·é箱工äœãåŠæäžèœïŒè«åæåå ±åã
è«æ³šæïŒäžæ¯æŽåšæšèªå·±ç Docker æ K8s 容åšå §å®è£æåç agentãäœæšå¯ä»¥éšæäœ¿çšæåç宿¹ Docker å K8s å®¹åšæ 象äŸå®è£ agentã
ð æå¯ä»¥åšå ¬æäºèæ¬æ©åšäžå·è¡ OpenResty XRay åïŒ
å¯ä»¥ïŒæ¯åŠåŸ®è» Azureãè°·æé²ïŒGCPïŒãäºéЬéé²ïŒAWSïŒæ Digital Oceanãèæ¬åçé²äŒºæåšéœå¯ä»¥ãäžæ¯äžå®èŠç©çæ©ã
ð agent éèŠå®è£ C ç·šè¯åšå·¥å ·éåïŒ
äžéèŠãèé£äºéæºçåæ è¿œè¹€æ¡æ¶åŠ SystemTap æ eBPF/BCC äžåïŒOpenResty XRay äžèŠæ±åšç®æšæ©åšäžå®è£ä»»äœ C æ C++ ç·šè¯åšå·¥å ·éãæ²æ gccïŒæ²æ clangïŒçéºŒéœæ²æãæ€å€ïŒå®äžéèŠå®è£ä»»äœ Linux æ žå¿æšé æªæ¡ã
ð OpenResty XRay agent æ¯åŠäœéšçœ²åš K8s äžçïŒ
OpenResty XRay Agent åš Kubernetes ç°å¢äžéåžžæ¡çš DaemonSet çæ¹åŒé²è¡éšçœ²ã
ð agent 䜿çšè管ç
ð agent çéé·å€å€§ïŒ
æååéå° agent çšåŒå°æšæšèšçºâçç¢âç䌺æåšçæèœåœ±é¿éå°æäœãagent 䜿çšäºä»¶è§žçŒçåæš£æ¹æ³ïŒå æ€å®äžæäžçŽè©Šåæ¶éè³æïŒåªæ¯åšæçæ£éèŠçæåææ¶éãç¶äžå暣æïŒæšçææçšåºåŽæ ŒæçŸ©äžç¢ççé¡å€éé·æ¯ 0ãéæ¯ç±æŒåæ 远蹀ççæ£éäŸµå ¥æ§ãå³äœ¿åšå暣æïŒæå倧倿žçåæåšçéé·ä¹æè©²å°æŒæšçæçšç5%ãå³äœ¿æ¯é£äºåæ¬éé·æ¯èŒæè²Žçå·¥å ·ïŒç³»çµ±ä¹æå詊èªå調æŽéäºåæåšçé »çåçšåºç¯åïŒä»¥åéæžå°åœ±é¿ã
åŠææšäžåš web æ§å¶æª¯äžææšç䌺æåšæšèšçºâçç¢âïŒç³»çµ±æèªçºå®åæ¯éçŒææž¬è©Šç°å¢ãå æ€ïŒå®å°äžåå°è³æºçäœ¿çšæè¬¹æ æ åºŠïŒææçåæåšå°å šéå·è¡ïŒä»¥äŸ¿æšèœåå¿«åŸå°çµæã
ð å®è£ agent åŸïŒæéèŠéæ°ååæççšåºåïŒ
äžéèŠïŒåæ 远蹀æè¡çäžååªé»æ¯äºåŸåæãæšäžéèŠéæ°ååæšçæçšçšåŒæä»»äœçŸæççšåºïŒè®æ°å®è£ç OpenResty XRay agent é²è¡åæãæåå¯ä»¥åå°éäžé»ïŒå çºæåäžéèŠä»»äœæ°çå€æãæ°çååéžé ïŒä¹äžéèŠåæšçæçšçšåŒæ³šå ¥ä»»äœçšåŒç¢Œã宿¯ç¡æ±æåéäŸµå ¥çã
æåçè§£ïŒæšå¯èœæäžäºçšåºé²å ¥äºäžäºçœèŠççæ ïŒéæ°ååå®åæäœ¿å顿¶å€±ãéå°±æ¯çºç麌äºåŸåæåé€é¯æ¯åŠæ€ééµã
ð æææš£æèœåæ¢ agentïŒ
èŠåæ¢ OpenResty XRay agent æåïŒåªéå·è¡ä»¥äž shell åœä»€ã
sudo systemctl stop orxray-agent
äœéåªæ¯æ«æçãåŠæç³»çµ±éæ°ååæéåïŒagent æåæå次ååãèŠæ°žä¹ 忢å®ïŒæšä¹å¯ä»¥åšå·è¡åäžååœä»€åŸåå·è¡éååœä»€ã
sudo systemctl disable orxray-agent
å°æŒå®¹åšåç agent æåïŒæšå¯ä»¥çš Docker æ Kubernetes 忢 agent 容åšäŸé ã
ð æåŠäœéæ°åå agentïŒ
èŠéæ°ååæšç agentïŒåªéå·è¡åœä»€
sudo systemctl restart orxray-agent
çåŸ å¹ŸåéïŒæ°ç agent äŸé å°±æçæã
ð æç agent äžå·¥äœäºïŒææè©²æéºŒåïŒ
æäºæåïŒç±æŒç¶²è·¯æç¡¬ç¢åé¡ïŒagent äžèœæ£åžžå·¥äœãåšéçš®æ æ³äžïŒè«æª¢èŠè©²ç®éäžçé¯èª€æ¥èªæªæ¡ã
/usr/local/orxray-agent/logs/
åŠææšå°é¯èª€æ¥èªæªæ¡äžçé¯èª€ééèŠå¹«å©ïŒè«éšæè¯çµ¡æåã
ð åŠäœå·è¡ OpenResty XRay åæèšæ¶é«ãCPU çåé¡ïŒ
èŠå·è¡ OpenResty XRay åæèšæ¶é«ãCPU çåé¡ïŒæšå¯ä»¥å©çšå ¶åŒå°åŒåæåèœã詳现çæäœæ¥é©åçžéæ¡äŸïŒè«åé± OpenResty 宿¹éšèœæ ŒäžéæŒ XRay ç·äžåæèšæ¶é«åé« CPU åé¡çç³»åæç« ã
ð agent å¯ä»¥åæç§äººè»é«åïŒ
æ¯çïŒåŠææšç·šå¯«äºç§æè»é«ç話ãäŸåŠïŒåŠææšæ²æåŸå°å
¶ä»äŸæåçèš±å¯ïŒæšå°±äžæè©²åæä»åçå°æè»é«ãäœæ¯ïŒåŠææšç·šå¯«äºéåè»é«ïŒæè
ææ©ææ¥è§žå°åå§ç¢ŒïŒäžŠäžæç·šè¯çèš±å¯æ¬ïŒé£å°±å¯ä»¥äºãèäžæšçè³å¯ä»¥äœ¿çšæåç Y èªèšïŒlangïŒäŸçºæšççšåŒç·šå¯«é«éåæåšãè«ç¢ºä¿æšçš DWARF è³æïŒæ "é€é¯ç¬Šè"ïŒäŸç·šè¯ç§æè»é«ãäŸåŠïŒC/C++ çšåŒåšäœ¿çš gcc
æ g++
æïŒæäœ¿çš g
æ g3
éžé
é²è¡ç·šè¯ãäœ¿çš DWARF 笊èç·šè¯å°çšåŒçå·è¡æèœæ²æä»»äœåœ±é¿ïŒå€§å€æžäž»æµç Linux çŒè¡çåšå
¶æšæºè»é«å
äžéœé èšé暣åã
ç¶èïŒDWARF è³æäžŠäžçžœæ¯å¿ éçãOpenResty XRay äžäžäºåºæ¬åæåšäžéèŠâé€é¯ç¬ŠèâäŸå·¥äœãæåæŸç¶å¹«å©äžå客æ¶åš C/C++ åœåŒå±€é¢äžæºç¢ºå®äœäºäžåç¬¬äžæ¹å°æåº«çèšæ¶é«æŽ©æŒãäœèŠç¢ºä¿æšç¬Šåç¬¬äžæ¹çèš±å¯èŠæ±ã
ð è³æå®å š
ð agent ææ¶éåªäºè³æïŒ
OpenResty XRay agent çšåŒåªæ¶éçšæŒåææèœåé¡ãæé€ç©©å®æ§åè¡çºäžçåé¡ä»¥åææå®å šæŒæŽçåºæ¬è³æãæååŸäžåŸæšçæ¥åçŽçšåŒç¢Œäžæ¶éä»»äœæœåšçææè³æãæåé寊æœä¿è·æªæœïŒä»¥é¿å æå€å°æ¶éè³æäŸæºäžçææè³æïŒäœ¿å ¶äžææŽ©é²å°æšçæçšçšåŒçšåºä¹å€ã
ð äœ ååŠäœèç agent æ¶éçè³æïŒ
æåé垞謹æ å°ä¿è·æå客æ¶çè³æåé±ç§ã鿝æåç第äžèŠåãåšå³èŒžææè³æå°æåç web æ§å¶æª¯æïŒæåçžœæ¯äœ¿çšå·¥æ¥æšæºçå 坿¹æ³ïŒåŠ TLSïŒãæå web æ§å¶æª¯çè³æå²åå管çä¹ç¬Šåææ SOC 2 æºåãåªææè¿ 2 åšçåå§è³æåæŸåšæåç web æ§å¶æª¯äžïŒæŽé«éå¥çå ±åè³æåæŸæéæŽé·äºïŒãåŠææäºå®¢æ¶ææŽççè³æçåœé±æèŠæ±ïŒæåä¹å¯ä»¥æ»¿è¶³ã
ð äœ åæåºå®æå享æåçè³æåïŒ
äžïŒæ°žé äžæãæåäžæææšçè³æè³£çµŠä»»äœç¬¬äžæ¹ãæååªå¯èœèæåçäžäºå€éšæ¿å åå享äžäºç¶é審èšåæ··æ·çè³æãèæåææçæ¿å åå¿ é èæå簜眲ä¿å¯åè°ïŒNDAïŒã
ð æå¯ä»¥é¿å äžå³ä»»äœè³æå°äœ åçæ§å¶æª¯åïŒ
æ¯çïŒæåçºæåŽæ Œçè³æèçæ¿ççå ¬åžæäŸ OpenResty XRay çèªäž»éšçœ²çæ¬ã宿¯é²çæ¬æŽè²Žãå°æŒèªäž»éšçœ²çæ¬ïŒäœ¿çšè åšèªå·±çç°å¢äžéšçœ² web æ§å¶æª¯ïŒå æ€ïŒæ²æè³ææè¢«äžå³å° OpenResty Inc ç䌺æåšäžã
ð é€é¯ç¬Šèèåæèœå
ð æéèŠåšæææç䌺æåšäžå®è£é€é¯ç¬Šèå åïŒ
äžéèŠãOpenResty XRay åšäžåå«å package database çé ç«¯è³æåº«äžçŽ¢åŒå®çŒçŸçææé€é¯ç¬Šèãæ¯ç¶ agent çŒçŸäžåäºé²äœå¶çå¯å·è¡æªæ¡ïŒå®å°±æèªåæ¥è©¢å è³æåº«äžçžæçé€é¯ç¬Šèã
æåå·è¡ç¬è²çšåŒïŒåšç¶²é網路äžäžçŽç²åå ¬å ±è»é«å çé€é¯ç¬ŠèïŒæ DWARF è³æïŒãèäžæåéèªå玢åŒäœ¿çšè èªå·±ç DWARF è³æåé€é¯ç¬Šèãæ¯å OpenResty XRay ç§æ¶éœæèªå·±çšç«çè»é«å è³æåº«ä»¥ä¿è·é±ç§ãåŠææšèªå·±ç·šè¯è»é«ïŒé£éºŒè«ç¢ºä¿æšæäžèºé¢ç·ïŒæç·äžïŒçæ©åšïŒå®è£äºææçè»é«äºé²äœå¶æªæ¡åé€é¯ç¬ŠèïŒäžŠäžè® OpenResty XRay agent åšé£å·è¡ïŒè³å°æäžæ®µæéïŒãäžæŠ DWARF è³æåäºé²äœå¶çšåŒè¢«çŽ¢åŒå°äœ¿çšè çè»é«å è³æåº«äžïŒäœ¿çšè å°±å¯ä»¥åšä»ææçæ©åšäžæºè«é€é¯ç¬Šèäºã
ð OpenResty XRay 說æççšåŒçŒºä¹é€é¯ç¬ŠèïŒææè©²æéºŒåïŒ
åŠæçšåŒæ¯èªè¡ç·šè¯çïŒè©ŠèæŸå°èæšçäž»è»é«å
çžéçé€é¯ç¬Šèå
ïŒæ¯åŠåºæŒ RPM ççŒè¡çäžç *-debuginfo
å
ïŒåºæŒ Deb ççŒè¡çäžç *-dbgsym.ddeb
æ*-dbgsym.deb
æªæ¡ïŒãå° debuginfo å
å®è£åšäžèºå®è£äžŠå·è¡äº agent çæ©åšäžïŒäžŠçåŸ
agent å°é€é¯ç¬Šèé²è¡çŽ¢åŒã
åèšæšççšåŒåšç·šè¯ææ²æé€é¯ç¬ŠèïŒæè
æšæŸäžå°çžæç debuginfo å
ãåšéçš®æ
æ³äžïŒæšå¯ä»¥å詊åšåçšé€é¯ç¬Šèçæ
æ³äžéæ°ç·šè¯æšççšåŒïŒå°æŒ C/C++ çšåŒïŒåšç·šè¯åšåœä»€åäžå³é -g
æ-g3
éžé
ïŒãåŠå€ïŒç¢ºä¿æšçæå
æä»€ç¢Œçæäžå debuginfo å
ïŒåŠ *-debuginfo*.rpm
æ*-dbgsym.deb
ïŒïŒèäžæ¯æé€é¯ç¬Šèäžæ£ã
æåçè§£å°æŸé€é¯ç¬Šèæææ¯äžä»¶åŸéº»ç ©çäºãæåäžçŽåšéçŒäžåäººå·¥æºæ §ç³»çµ±ïŒå¯ä»¥åŸçŸæç DWARF è³æäžèªåé建çžäŒŒäœäžå®å šçžåçäºé²äœå¶çšåŒç DWARF è³æãäžæŠéåæºåå°±ç·ïŒOpenResty XRay å°èœå€ 培åºåæå€§é猺å°é€é¯ç¬Šèçéæºè»é«äºé²äœå¶æªæ¡ã
åŒåŸäžæçæ¯ïŒOpenResty XRay äžçäžäºåºæ¬åæåšäžŠäžèŠæ±âé€é¯ç¬ŠèâäŸå·¥äœãäºå¯ŠäžïŒæåæŸç¶å¹«å©äžå客æ¶åš C/C++ åœåŒå±€é¢äžæºç¢ºå®äœäºäžåç¬¬äžæ¹å°æåº«çèšæ¶é«æŽ©æŒã
ð æå¯ä»¥ç·šå¯«èªå·±çåæåšåïŒ
å¯ä»¥ïŒæšå¯ä»¥äœ¿çšæåç Y èªèšïŒæ YlangïŒäŸç·šå¯«æšèªå·±çåæåšãYlang æ¯ C çšåŒèªèšçäžå倧çåéïŒææåèªå·±çåæ è¿œè¹€çæŽå å¥ä»¶ãæåéæäŸäº Ylua èªèšïŒéæ¯äžååž¶ææŽå å¥ä»¶ç Lua èªèšçåéïŒä»¥å YSQLïŒäžå SQL æ¹èšã
ð å ¶ä»åé¡
ð éäºæ žå¿è𿝿¯åŠæåœ±é¿
ð vsyscall read attempt denied
åšååçŸå Žé補åŸïŒæ žå¿å¯èœæäžæ²é¡äŒŒäžé¢é暣çèšæ¯ãéåèšæ¯æ¯ç¡å®³çïŒå¯ä»¥å¿œç¥ã
[29389.731303] redis-server[298169] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:7f000013d241 cs:33 sp:2aaacbcf6f08 ax:0 si:7f00003db659 di:ffffffffff600000
ð 1 å License æ¯æŽå€å°å賬æ¶ç»å ¥ïŒ
1 å License æ¯æŽ 2 å賬èç»å ¥ã
ð OpenResty XRay æéºŒé 眮 HTTP 代çïŒ
åŠææšç OpenResty XRay Agent éšçœ²åšäžåéèŠéé HTTP 代ç蚪åå ¬ç¶²çç°å¢äžïŒæšå¯ä»¥æç §è©²æä»¶çæ¥é©é 眮åäœ¿çš HTTP 代çã
- OpenResty XRay ãšã¯äœã§ããïŒ
- OpenResty XRay ãšã¯äœã§ããïŒ
- OpenResty XRay ã䜿çšãã¹ã人ã¯èª°ã§ããïŒ
- OpenResty XRa 㯠OpenResty äžã§åäœããŠããªãã¢ããªã±ãŒã·ã§ã³ãåæã§ããŸããïŒ
- OpenResty XRay ã¯ã¢ããªã±ãŒã·ã§ã³ã«å€æŽãå ããå¿ èŠããããŸããïŒ
- å人䜿çšã®ããã®ããŒãœãã«çã¯ãããŸããïŒ
- ã€ã³ã¹ããŒã«ãšãããã€
- ã¢ããªã±ãŒã·ã§ã³ã« OpenResty XRay ããããã€ããŠã€ã³ã¹ããŒã«ããã«ã¯ã©ãããã°ããã§ããïŒ
- ã©ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããµããŒãããŠããŸããïŒ
- éåžžã«æ°ãã Linux ã«ãŒãã«ãå¿ èŠã§ããïŒ
- èªåã® Linux ã«ãŒãã«ã䜿çšã§ããŸããïŒ
- èªå·±ã³ã³ãã€ã«ãããã«ãŒãã«ã¯ãµããŒããããŠããŸããïŒ
- OpenResty XRay ã¯ã©ã®ã¢ããªã±ãŒã·ã§ã³ãšããã°ã©ãã³ã°èšèªããµããŒãããŠããŸããïŒ
- OpenResty XRay Agent 㯠AWS EKS äžã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ãåæã§ããŸããïŒ
- VMWare/VirtualBox/KVM/ ãªã©ã®ããŒã«ã«ä»®æ³ãã·ã³ã§ OpenResty XRay ã䜿çšã§ããŸããïŒ
- å ¬å ±ã¯ã©ãŠãä»®æ³ãã·ã³ã§ OpenResty XRay ãå®è¡ã§ããŸããïŒ
- Agent ã«ã¯ C ã³ã³ãã€ã©ããŒã«ãã§ãŒã³ãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸããïŒ
- OpenResty XRay Agent 㯠K8s ã«ã©ã®ããã«ãããã€ãããŸããïŒ
- Agent ã®äœ¿çšãšç®¡ç
- Agent ã®ãªãŒããŒãããã¯ã©ã®ãããã§ããïŒ
- Agent ãã€ã³ã¹ããŒã«ããåŸãããã»ã¹ãåèµ·åããå¿ èŠããããŸããïŒ
- Agent ã忢ããã«ã¯ã©ãããã°ããã§ããïŒ
- Agent ãåèµ·åããã«ã¯ã©ãããã°ããã§ããïŒ
- Agent ãåäœããªãå Žåã¯ã©ãããã°ããã§ããïŒ
- OpenResty XRay ãå®è¡ããŠã¡ã¢ãªãCPU ãªã©ã®åé¡ãåæããã«ã¯ã©ãããã°ããã§ããïŒ
- Agent ã¯ãã©ã€ããŒããœãããŠã§ã¢ãåæã§ããŸããïŒ
- ããŒã¿ã»ãã¥ãªãã£
- ãããã°ã·ã³ãã«ãšåæèœå
- ãã¹ãŠã®ãµãŒããŒã«ãããã°ã·ã³ãã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããïŒ
- OpenResty XRay ãããã°ã©ã ã«ãããã°ã·ã³ãã«ãäžè¶³ããŠãããšèšã£ãŠããå Žåãã©ãããã°ããã§ããïŒ
- èªåã®ã¢ãã©ã€ã¶ãŒãæžãããšã¯ã§ããŸããïŒ
- ãã®ä»ã®è³ªå
ð OpenResty XRay ãšã¯äœã§ããïŒ
ð OpenResty XRay ãšã¯äœã§ããïŒ
OpenResty XRay ã¯ãããŸããŸãªã¯ã©ãŠãããã³ãµãŒããŒã¢ããªã±ãŒã·ã§ã³ããªã¢ã«ã¿ã€ã ã§åæã§ããåçãã¬ãŒã¹è£œåã§ããå®è¡äžã®ããã»ã¹ãã³ã³ãããèªã¿åãå°çšã®ããŒã¿ããŒã¹ãšããŠæ±ããããã©ãŒãã³ã¹ã®åé¡ãç°åžžããšã©ãŒãã»ãã¥ãªãã£ã®è匱æ§ã解決ããããã«å¿ èŠãªæ å ±ãæœåºããŸããOpenResty XRay ã¯ããã¬ããžããŒã¹ãæšè«ãšã³ãžã³ãæ°çŸã®é«åºŠãªã¢ãã©ã€ã¶ãŒãåããŠãããã¿ãŒã²ããã¢ããªã±ãŒã·ã§ã³ã倿ŽãŸãã¯åœ±é¿ãäžããããšãªããæ·±å»ãªåé¡ã®æ ¹æ¬åå ã蚺æããçµã蟌ãããšãã§ããŸãã
ð OpenResty XRay ã䜿çšãã¹ã人ã¯èª°ã§ããïŒ
DevOps ã¯ãOpenResty XRayã䜿çšããŠãåé¡ãè¿ éã«çºèŠããããæ ¹æ¬åå ãç¹å®ãããããçºèŠãããåé¡ãçæãããèªåã¬ããŒããéçºè ã«è»¢éããããšãã§ããŸãã
éçºããŒã ããæ¥åžžã®éçºäžãæ°ãããœãããŠã§ã¢è£œåã®ãªãªãŒã¹åã«ãOpenResty XRay ã䜿çšããŠãååž°åé¡ããã§ãã¯ããããšãã§ããŸãã
ð OpenResty XRa 㯠OpenResty äžã§åäœããŠããªãã¢ããªã±ãŒã·ã§ã³ãåæã§ããŸããïŒ
ãã¡ããã§ãïŒOpenResty XRay ã¯ãä»»æã®ãœãããŠã§ã¢ãåæã§ãããŠãããŒãµã«ãã©ãããã©ãŒã ã§ããå°ãªããšããDWARF ãããã°ã·ã³ãã«ããœãŒã¹ã³ãŒããªã©ã«ã¢ã¯ã»ã¹ã§ãããœãããŠã§ã¢ã«é¢ããŠã¯ã
ãã ããOpenResty XRay ã¯çŸåšãOpenResty ããã³ Nginx ã®æè¡ã¹ã¿ãã¯ã§æã广çã«åäœããŸããã©ã®ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã OpenResty XRay ã«æ¬¡ã«ãµããŒãããŠã»ãããæããŠãã ããïŒ
ð OpenResty XRay ã¯ã¢ããªã±ãŒã·ã§ã³ã«å€æŽãå ããå¿ èŠããããŸããïŒ
ãããïŒOpenResty XRay ã¯é«åºŠãªåçãã¬ãŒã¹æè¡ã䜿çšããŠãããã¿ãŒã²ããã¢ããªã±ãŒã·ã§ã³ã®ååãå¿ èŠãšããŸããã100% éäŸµå ¥åã§ãã
- ã¢ããªã±ãŒã·ã§ã³ã«ãã©ã°ã€ã³ãã¢ãžã¥ãŒã«ã远å ããå¿ èŠã¯ãããŸããã
- ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã«ããããåœãŠãå¿ èŠã¯ãããŸããã
- ç¹å¥ãªã³ã³ãã€ã«ãèµ·åãªãã·ã§ã³ã¯å¿
èŠãããŸããïŒãã ããC/C++ ããã°ã©ã ãã³ã³ãã€ã«ããéã«ã¯ãDWARF ããŒã¿ãéä¿¡ããããã«
-g
ãªãã·ã§ã³ãå¿ èŠã§ãããããã¯éåžžã«æšæºçãªæ¹æ³ã§ãïŒã - ã¢ããªã±ãŒã·ã§ã³ããã»ã¹ã«ã³ãŒããæ³šå ¥ããããšã¯ãããŸããã
OpenResty XRay ã¢ãã©ã€ã¶ãŒã䜿çšããŠããã¢ããªã±ãŒã·ã§ã³ããã»ã¹ã«å®³ãäžããããã¯ã©ãã·ã¥ããããããããšã¯ãããŸããããªããªããããã»ã¹ã«äœã远å ããªãããã§ãã
ð å人䜿çšã®ããã®ããŒãœãã«çã¯ãããŸããïŒ
ã¯ãããããŸãïŒããŒãœãã«çãäŒç€Ÿãæ¿åºããã®ä»ã®åæ¥ç®çã§äœ¿çšãããªãéãããã ããéåžžãããŒãœãã«çã«ã¯ SLA ãæäŸããŠããŸããã
ð ã€ã³ã¹ããŒã«ãšãããã€
ð ã¢ããªã±ãŒã·ã§ã³ã« OpenResty XRay ããããã€ããŠã€ã³ã¹ããŒã«ããã«ã¯ã©ãããã°ããã§ããïŒ
ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ã³ã³ããããããµãŒããŒã« OpenResty XRay agent ããã°ã©ã ãã€ã³ã¹ããŒã«ããŠå®è¡ããå¿ èŠããããŸããagent ããã°ã©ã ã¯ãåããµãŒããŒäžã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãæ€æ»ã§ããã¹ã¿ã³ãã¢ãã³ã®ããŒã¢ã³ã§ãããŸããOpenResty XRay ãŠã§ãã³ã³ãœãŒã«ã®ã¯ã©ã€ã¢ã³ããšããŠãæ©èœããŸãã
OpenResty XRay agent ãã€ã³ã¹ããŒã«ããæ¹æ³ã¯ããã€ããããŸãã
- 察å¿ãã Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³çšã«æäŸãããŠãã RPM ãŸã㯠Deb ããã±ãŒãžãªããžããªãã€ã³ã¹ããŒã«ããŸãã
- Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³çšã«æäŸãããŠãããã¹ãŠã® RPM ãŸã㯠Deb ããã±ãŒãžãå«ã倧ããª
.tar.gz
ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã - å ¬åŒã® Docker ãŸã㯠KubernetesïŒK8sïŒã³ã³ããã€ã¡ãŒãžãã€ã³ã¹ããŒã«ããŸãã
äžè¬çãªééãã¯ãagent ãèªåã®ã³ã³ããã«ã€ã³ã¹ããŒã«ããããšã§ããããã¯åžžã«å€±æããŸãããªããªããã³ã³ããã¯ã»ãšãã©ã®å Žåãä»ã®ããã»ã¹ãã³ã³ãããæ€æ»ããããã«å¿ èŠãªæš©éããã¡ã€ã«ã·ã¹ãã ã¢ã¯ã»ã¹ãæ¬ ããŠããããã§ãã
ð ã©ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããµããŒãããŠããŸããïŒ
Ubuntu 24.04 noble, Ubuntu 22.04 Jammy, Ubuntu 20.04 Focal, Ubuntu 18.04 Bionic, Debian 12 Bookworm, Debian 11 Bullseye, Debian 10 Buster, Debian 9 Stretch, Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 7, Rocky Linux 9, Rocky Linux 8, AlmaLinux 9, AlmaLinux 8, Cent OS 8, Cent OS 7, Cent OS 6, Fedora 36, Fedora 35, Fedora 34, Fedora 33, Fedora 32, Amazon Linux 2023, Amazon Linux 2, Amazon Linux 1, Alibaba Cloud Linux 3, Alibaba Cloud Linux 2, Tencent Linux 3, Tencent Linux 2, OpenSUSE 15, Kylin 10, Kylin 7, CBL-Mariner 2
å ¬åŒã® Docker ãŸã㯠K8s ã³ã³ããã€ã¡ãŒãžã¯ãã¿ãŒã²ããã¢ããªã±ãŒã·ã§ã³ã³ã³ããå ã§äœ¿çšããã Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ããµããŒããªã¹ãã«å«ãŸããŠããéããã³ã³ããããµããŒãããä»»æã®ææ°ã® Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§å®è¡ã§ããŸãã
OpenResty XRay agent ãµãŒãã¹ããã€ãã£ãã«å®è¡ãããå Žåãã»ãšãã©ã®äž»æµã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ããµããŒãããŠããŸããææ°ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãµããŒããªã¹ãã確èªããŠãã ããã
æ°ãã Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«ãã€ãã£ããµããŒããå¿ èŠãªå Žåã¯ããåãåãããã ããïŒinfo@openresty.comïŒ
å°æ¥çã«ã¯ãAndroidãmacOSã*BSDãMicrosoft Windows ãªã©ã®é Linux ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããµããŒãããå¯èœæ§ããããŸãã
ð éåžžã«æ°ãã Linux ã«ãŒãã«ãå¿ èŠã§ããïŒ
ãããïŒCentOS 7 ã® 3.10 ã«ãŒãã«ãªã©ã®å€ãã«ãŒãã«ããµããŒãããŠããŸãããã ããCentOS 6 ã® 2.6 ã«ãŒãã«ã®ãããªå€ãã«ãŒãã«ã¯ãµããŒãããŠããŸããã
ð èªåã® Linux ã«ãŒãã«ã䜿çšã§ããŸããïŒ
ã¯ãïŒãã ããã«ãŒãã«ããœãããŠã§ã¢ããã±ãŒãžããŒã¿ããŒã¹ã«ã€ã³ããã¯ã¹ãã補åãšã®äºææ§ã培åºçã«ãã¹ãã§ããããã«ãããŒã ã«é£çµ¡ããå¿ èŠããããŸããã«ã¹ã¿ã ãŸãã¯æªç¥ã®ã«ãŒãã«ã®èªåã€ã³ããã¯ã¹äœæã¯ãŸã ãµããŒãããŠããŸãããå°æ¥çã«ãã®ãµããŒãã远å ããããšãæ€èšãããããããŸããã
ð èªå·±ã³ã³ãã€ã«ãããã«ãŒãã«ã¯ãµããŒããããŠããŸããïŒ
ã¯ããé¢é£ããã«ãŒãã«ããã±ãŒãžãã¢ããããŒãããå¿ èŠããããŸããå¿ èŠãªã«ãŒãã«ããã±ãŒãžã®è©³çްã¯ãOpenResty XRay ã³ã³ãœãŒã«ã®ã¢ããããŒãããŒãžãåç §ããŠãã ããã
ð OpenResty XRay ã¯ã©ã®ã¢ããªã±ãŒã·ã§ã³ãšããã°ã©ãã³ã°èšèªããµããŒãããŠããŸããïŒ
ãµããŒããããŠããããã°ã©ãã³ã°èšèªãšã©ã³ã¿ã€ã ïŒPython, Java, Rust, Perl, PHP, Erlang, Ruby, Go, LuaJIT, C/C++ ãµããŒããããŠãããµãŒããŒãšãããã·ïŒOpenResty, Envoy, Kong, CockroachDB, Nginx,
ð OpenResty XRay Agent 㯠AWS EKS äžã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ãåæã§ããŸããïŒ
ã¯ãã
ð VMWare/VirtualBox/KVM/ ãªã©ã®ããŒã«ã«ä»®æ³ãã·ã³ã§ OpenResty XRay ã䜿çšã§ããŸããïŒ
ã¯ãïŒãã¹ãŠã®ãã®ãããªãã«ã·ã¹ãã ä»®æ³åæè¡ã¯ãOpenResty XRay ãšäžç·ã«ããã«åäœããã¯ãã§ããããã§ãªãå Žåã¯ãå ±åããŠãã ããã
èªåã® Docker ãŸã㯠K8s ã³ã³ããå ã« Agent ãã€ã³ã¹ããŒã«ããããšã¯ãµããŒããããŠããŸããããã ããå ¬åŒã® Docker ããã³ K8s ã³ã³ããã€ã¡ãŒãžã䜿çšã㊠Agent ãã€ã³ã¹ããŒã«ããããšã¯åžžã«å¯èœã§ãã
ð å ¬å ±ã¯ã©ãŠãä»®æ³ãã·ã³ã§ OpenResty XRay ãå®è¡ã§ããŸããïŒ
ã¯ãïŒããšãã°ãMicrosoft AzureãGoogle CloudïŒGCPïŒãAmazon CloudïŒAWSïŒããŸã㯠Digital Oceanãä»®æ³åãããã¯ã©ãŠããµãŒããŒã¯åé¡ãããŸãããç©çãã·ã³ã¯å¿ èŠãããŸããã
ð Agent ã«ã¯ C ã³ã³ãã€ã©ããŒã«ãã§ãŒã³ãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸããïŒ
ãããããªãŒãã³ãœãŒã¹ã®åçãã¬ãŒã¹ãã¬ãŒã ã¯ãŒã¯ã§ãã SystemTapãeBPF/BCC ãšã¯ç°ãªããOpenResty XRay ã¯ãã¿ãŒã²ãããã·ã³ã« C ãŸã㯠C++ ã³ã³ãã€ã©ããŒã«ãã§ãŒã³ãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸãããgcc ã clang ãäœããããŸããããŸããLinux ã«ãŒãã«ããããŒãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããã
ð OpenResty XRay Agent 㯠K8s ã«ã©ã®ããã«ãããã€ãããŸããïŒ
OpenResty XRay Agent ã¯ãéåžžãKubernetes ç°å¢ã§ DaemonSet ã®æ¹æ³ã§ãããã€ãããŸãã
ð Agent ã®äœ¿çšãšç®¡ç
ð Agent ã®ãªãŒããŒãããã¯ã©ã®ãããã§ããïŒ
Agent ããã°ã©ã ãããããã¯ã·ã§ã³ããšããŒã¯ããããµãŒããŒã«äžããããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããããåªããŠããŸããAgent ã¯ã€ãã³ãé§åã®ãµã³ããªã³ã°æ¹æ³ã䜿çšããŠãããããåžžã«ããŒã¿ãåéããããšããã®ã§ã¯ãªããå®éã«å¿ èŠãªãšãã«ã®ã¿åéããŸãããµã³ããªã³ã°ããŠããªããšãã¯ããã¹ãŠã®ããã»ã¹ã«ãã£ãŠçæããã远å ã®ãªãŒããŒãããã¯å³å¯ã« 0 ã§ããããã¯ãåçãã¬ãŒã¹ã®çã«éäŸµå ¥åã®æ§è³ªã«ãããã®ã§ãããµã³ããªã³ã°äžã§ããã»ãšãã©ã®ã¢ãã©ã€ã¶ãŒã®ãªãŒããŒãããã¯ã¢ããªã±ãŒã·ã§ã³ã® 5% æªæºã§ããã¹ãã§ããå ã ã³ã¹ããé«ãããŒã«ã§ãã£ãŠããã·ã¹ãã ã¯ãããã®ã¢ãã©ã€ã¶ãŒã®é »åºŠãšããã»ã¹ç¯å²ãèªåçã«èª¿æŽããŠåœ±é¿ãæå°éã«æããããšããŸãã
ãŠã§ãã³ã³ãœãŒã«ã§ãµãŒããŒãããããã¯ã·ã§ã³ããšããŠããŒã¯ããªãå Žåãã·ã¹ãã ã¯ããããéçºãŸãã¯ãã¹ãç°å¢ãšèŠãªããŸãããããã£ãŠããªãœãŒã¹ã®äœ¿çšã«å¯ŸããŠãã¯ãæ éã§ã¯ãªããªãããã¹ãŠã®ã¢ãã©ã€ã¶ãŒãå šéåã§å®è¡ãããã§ããã ãæ©ãçµæãåŸãããšãã§ããŸãã
ð Agent ãã€ã³ã¹ããŒã«ããåŸãããã»ã¹ãåèµ·åããå¿ èŠããããŸããïŒ
ãããïŒåçãã¬ãŒã¹æè¡ã®å©ç¹ã® 1 ã€ã¯ãäºåŸåæã§ããæ°ããã€ã³ã¹ããŒã«ããã OpenResty XRay Agent ãåæããããã«ãã¢ããªã±ãŒã·ã§ã³ãæ¢åã®ããã»ã¹ãåèµ·åããå¿ èŠã¯ãããŸãããæ°ãããã©ã°ã€ã³ãæ°ããèµ·åãªãã·ã§ã³ããŸãã¯ã¢ããªã±ãŒã·ã§ã³ãžã®ã³ãŒãæ³šå ¥ãå¿ èŠãšããªãããããããè¡ãããšãã§ããŸããããã¯æ±æããªããéäŸµå ¥åã§ãã
ããã€ãã®ããã»ã¹ããŸããªç¶æ ã«å ¥ã£ãŠããå¯èœæ§ããããããããåèµ·åãããšåé¡ãæ¶ããããšãçè§£ããŠããŸããããããäºåŸåæãšãããã°ãéåžžã«éèŠã§ããçç±ã§ãã
ð Agent ã忢ããã«ã¯ã©ãããã°ããã§ããïŒ
OpenResty XRay Agent ãµãŒãã¹ã忢ããã«ã¯ã次ã®ã·ã§ã«ã³ãã³ããå®è¡ããã ãã§ãã
sudo systemctl stop orxray-agent
ãã ããããã¯äžæçãªãã®ã§ããã·ã¹ãã ãåèµ·åãŸãã¯ãªããŒãããããšãAgent ãµãŒãã¹ã¯åã³èµ·åããŸããæ°žä¹ ã«åæ¢ããã«ã¯ãåã®ã³ãã³ããå®è¡ããåŸã«ãã®ã³ãã³ããå®è¡ããããšãã§ããŸãã
sudo systemctl disable orxray-agent
ã³ã³ããåããã Agent ãµãŒãã¹ã®å ŽåãDocker ãŸã㯠Kubernetes ã䜿çšã㊠Agent ã³ã³ããã€ã³ã¹ã¿ã³ã¹ã忢ã§ããŸãã
ð Agent ãåèµ·åããã«ã¯ã©ãããã°ããã§ããïŒ
Agent ãåèµ·åããã«ã¯ã次ã®ã³ãã³ããå®è¡ããã ãã§ãã
sudo systemctl restart orxray-agent
æ°ååŸ ã€ãšãæ°ãã Agent ã€ã³ã¹ã¿ã³ã¹ãæå¹ã«ãªããŸãã
ð Agent ãåäœããªãå Žåã¯ã©ãããã°ããã§ããïŒ
ãããã¯ãŒã¯ãããŒããã£ã¹ã¯ã®åé¡ã«ãããAgent ãæ£åžžã«åäœããªãããšããããŸãããã®å Žåããã£ã¬ã¯ããªå ã®ãšã©ãŒãã°ãã¡ã€ã«ã確èªããŠãã ããã
/usr/local/orxray-agent/logs/
ãšã©ãŒãã°ãã¡ã€ã«ã®ãšã©ãŒã«ã€ããŠããã«ãµããŒããå¿ èŠãªå Žåã¯ããæ°è»œã«ãåãåãããã ããã
ð OpenResty XRay ãå®è¡ããŠã¡ã¢ãªãCPU ãªã©ã®åé¡ãåæããã«ã¯ã©ãããã°ããã§ããïŒ
OpenResty XRay ãå®è¡ããŠã¡ã¢ãªãCPU ãªã©ã®åé¡ãåæããã«ã¯ãã¬ã€ãä»ãåææ©èœãå©çšã§ããŸããè©³çŽ°ãªæäœæé ãšé¢é£ããã±ãŒã¹ã«ã€ããŠã¯ãOpenResty å ¬åŒããã°ã® XRay ãªã³ã©ã€ã³åæã¡ã¢ãªããã³é« CPU åé¡ã«é¢ããäžé£ã®èšäºãåç §ããŠãã ããã
ð Agent ã¯ãã©ã€ããŒããœãããŠã§ã¢ãåæã§ããŸããïŒ
ã¯ãããã©ã€ããŒããœãããŠã§ã¢ãäœæããå Žåã¯ãããšãã°ãä»ã®ãã³ããŒã®èš±å¯ãåŸãŠããªãå Žåã¯ã圌ãã®å°æãœãããŠã§ã¢ãåæãã¹ãã§ã¯ãããŸããããã ãããœãããŠã§ã¢ãäœæããå ŽåããŸãã¯ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããã³ã³ãã€ã«ããæš©éãããå Žåã¯åé¡ãããŸãããããã°ã©ã ã®ããã«é«åºŠãªã¢ãã©ã€ã¶ãŒãæžãããã«ãY èšèªïŒlangïŒã䜿çšããããšãã§ããŸãããã©ã€ããŒããœãããŠã§ã¢ã DWARF ããŒã¿ïŒãŸãã¯ããããã°ã·ã³ãã«ãïŒã§ã³ã³ãã€ã«ããããšã確èªããŠãã ãããããšãã°ãC/C++ ããã°ã©ã ã¯ãgcc
ãŸã㯠g++
ã䜿çšããéã« g
ãŸã㯠g3
ãªãã·ã§ã³ã䜿çšããŠã³ã³ãã€ã«ããå¿
èŠããããŸããDWARF ã·ã³ãã«ã§ã®ã³ã³ãã€ã«ã¯ãããã°ã©ã ã®å®è¡ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããŸãããã»ãšãã©ã®äž»æµã® Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã¯ãæšæºããã±ãŒãžã§ãããããã©ã«ãã§è¡ã£ãŠããŸãã
ãã ããDWARF ããŒã¿ã¯åžžã«å¿ èŠã§ã¯ãããŸãããOpenResty XRay ã®ããã€ãã®åºæ¬çãªã¢ãã©ã€ã¶ãŒã¯ãããããã°ã·ã³ãã«ããå¿ èŠãšããã«åäœããŸããå®éãC/C++ 颿°ã¬ãã«ã§ãµãŒãããŒãã£ã®å°æã©ã€ãã©ãªã®ã¡ã¢ãªãªãŒã¯ãæ£ç¢ºã«ç¹å®ããã®ãé¡§å®¢ã«æäŒã£ãããšããããŸãããã ãããµãŒãããŒãã£ã®ã©ã€ã»ã³ã¹èŠä»¶ãéµå®ããããšã確èªããŠãã ããã
ð ããŒã¿ã»ãã¥ãªãã£
ð Agent ã¯ã©ã®ãããªããŒã¿ãåéããŸããïŒ
OpenResty XRayAgent ããã°ã©ã ã¯ãããã©ãŒãã³ã¹ã®åé¡ãåæããå®å®æ§ãšåäœã®åé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããã»ãã¥ãªãã£ã®è匱æ§ãã¹ãã£ã³ããããã«äœ¿çšãããåºæ¬ããŒã¿ã®ã¿ãåéããŸããããžãã¹ã¬ãã«ã®ã³ãŒãããæœåšçã«æ©å¯æ§ã®ããããŒã¿ãåéããããšã¯ãããŸããããŸããããŒã¿ãœãŒã¹ããã®æ©å¯ããŒã¿ã誀ã£ãŠåéããªãããã«ããããã®ä¿è·çã宿œããŠãããã¢ããªã±ãŒã·ã§ã³ããã»ã¹ã®å€éšã«æŒããªãããã«ããŠããŸãã
ð Agent ãåéããããŒã¿ãã©ã®ããã«åŠçããŸããïŒ
顧客ã®ããŒã¿ãšãã©ã€ãã·ãŒãä¿è·ããããã«éåžžã«æ³šæãæã£ãŠããŸãããããæåªå äºé ã§ãããã¹ãŠã®ããŒã¿ããŠã§ãã³ã³ãœãŒã«ã«éä¿¡ããéã«ã¯ãåžžã«æ¥çæšæºã®æå·åæ¹æ³ïŒTLS ãªã©ïŒã䜿çšããŠããŸãããŠã§ãã³ã³ãœãŒã«ã®ããŒã¿ã¹ãã¬ãŒãžãšç®¡çãããã¹ãŠã®SOC 2 ã¬ã€ãã©ã€ã³ã«æºæ ããŠããŸããæåŸã® 2 é±éã®çããŒã¿ã®ã¿ããŠã§ãã³ã³ãœãŒã«ã«ä¿åãããŸãïŒããé«ã¬ãã«ã®ã¬ããŒãããŒã¿ã¯ããé·æéä¿åãããŸãïŒãäžéšã®é¡§å®¢ãããçãããŒã¿ã©ã€ããµã€ã¯ã«èŠä»¶ãæã£ãŠããå Žåãç§ãã¡ã¯ããã«ã察å¿ã§ããŸãã
ð ããŒã¿ã販売ãŸãã¯å ±æããŸããïŒ
ããããæ±ºããŠãããŸãããããŒã¿ã第äžè ã«è²©å£²ããããšã¯ãããŸãããå€éšã®å¥çŽè ãšç£æ»æžã¿ã§é£èªåãããããŒã¿ãå ±æããããšã¯ãããŸããããã¹ãŠã®å¥çŽè ã¯ç§ãã¡ãšç§å¯ä¿æå¥çŽïŒNDAïŒãç· çµããå¿ èŠããããŸãã
ð ã³ã³ãœãŒã«ã«ããŒã¿ãã¢ããããŒãããªãããã«ããããšã¯ã§ããŸããïŒ
ã¯ãïŒå³æ ŒãªããŒã¿åŠçããªã·ãŒãæã€äŒæ¥åãã«ãOpenResty XRay ã® On-Premise çãæäŸããŠããŸããã¯ã©ãŠãçãããé«äŸ¡ã§ããOn-Premise çã§ã¯ããŠãŒã¶ãŒãèªåã®ç°å¢ã«ãŠã§ãã³ã³ãœãŒã«ããããã€ãããããOpenResty Inc. ã®ãµãŒããŒã«ããŒã¿ãã¢ããããŒããããããšã¯ãããŸããã
ð ãããã°ã·ã³ãã«ãšåæèœå
ð ãã¹ãŠã®ãµãŒããŒã«ãããã°ã·ã³ãã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããïŒ
ããããOpenResty XRay ã¯ããªã¢ãŒãããŒã¿ããŒã¹ã§ãã package database ã«èŠã€ãã£ããã¹ãŠã®ãããã°ã·ã³ãã«ãã€ã³ããã¯ã¹ããŸããAgent ããã€ããªå®è¡ãã¡ã€ã«ãèŠã€ãããã³ã«ãããã±ãŒãžããŒã¿ããŒã¹ã§å¯Ÿå¿ãããããã°ã·ã³ãã«ãèªåçã«ç §äŒããŸãã
ã€ã³ã¿ãŒãããäžã®å ¬éãœãããŠã§ã¢ããã±ãŒãžã®ãããã°ã·ã³ãã«ïŒãŸã㯠DWARF ããŒã¿ïŒãç¶ç¶çã«ååŸããããã«ã¯ããŒã©ãŒãå®è¡ããŠããŸãããŸãããŠãŒã¶ãŒèªèº«ã® DWARF ããŒã¿ãšãããã°ã·ã³ãã«ãèªåçã«ã€ã³ããã¯ã¹ããŸããå OpenResty XRay ããã³ãã«ã¯ããã©ã€ãã·ãŒãä¿è·ããããã®ç¬ç«ãããœãããŠã§ã¢ããã±ãŒãžããŒã¿ããŒã¹ããããŸãããœãããŠã§ã¢ãèªåã§ã³ã³ãã€ã«ããå Žåã¯ããã¹ãŠã®ãœãããŠã§ã¢ãã€ããªãšãããã°ã·ã³ãã«ãã€ã³ã¹ããŒã«ããããªãã©ã€ã³ïŒãŸãã¯ãªã³ã©ã€ã³ïŒã®ãã·ã³ãçšæããOpenResty XRay Agent ãããã§å®è¡ããŠãã ããïŒå°ãªããšãäžæçã«ïŒãDWARF ããŒã¿ãšãã€ããªããã°ã©ã ããŠãŒã¶ãŒã®ãœãããŠã§ã¢ããã±ãŒãžããŒã¿ããŒã¹ã«ã€ã³ããã¯ã¹ããããšããŠãŒã¶ãŒã¯ãã¹ãŠã®ãã·ã³ã§ãããã°ã·ã³ãã«ãåé€ã§ããŸãã
ð OpenResty XRay ãããã°ã©ã ã«ãããã°ã·ã³ãã«ãäžè¶³ããŠãããšèšã£ãŠããå Žåãã©ãããã°ããã§ããïŒ
ããã°ã©ã ãèªåã§ã³ã³ãã€ã«ããããã®ã§ããå Žåãã¡ã€ã³ãœãããŠã§ã¢ããã±ãŒãžã«é¢é£ãããããã°ã·ã³ãã«ããã±ãŒãžãèŠã€ããŠã¿ãŠãã ããïŒRPM ããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ *-debuginfo
ããã±ãŒãžãDeb ããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ *-dbgsym.ddeb
ãŸã㯠*-dbgsym.deb
ãã¡ã€ã«ãªã©ïŒãAgent ãã€ã³ã¹ããŒã«ãããŠå®è¡ãããŠãããã·ã³ã«ãããã°æ
å ±ããã±ãŒãžãã€ã³ã¹ããŒã«ããAgent ããããã°ã·ã³ãã«ãã€ã³ããã¯ã¹ããã®ãåŸ
ã¡ãŸãã
ããã°ã©ã ããããã°ã·ã³ãã«ãªãã§ã³ã³ãã€ã«ãããå ŽåããŸãã¯å¯Ÿå¿ãããããã°æ
å ±ããã±ãŒãžãèŠã€ãããªãå Žåã¯ããããã°ã·ã³ãã«ãæå¹ã«ããŠããã°ã©ã ãåã³ã³ãã€ã«ããŠã¿ãŠãã ããïŒC/C++ ããã°ã©ã ã®å Žåãã³ã³ãã€ã©ã®ã³ãã³ãã©ã€ã³ã§ -g
ãŸã㯠-g3
ãªãã·ã§ã³ãæž¡ããŸãïŒããŸããããã±ãŒãžã³ã°ã¹ã¯ãªããããããã°æ
å ±ããã±ãŒãžïŒ*-debuginfo*.rpm
ãŸã㯠*-dbgsym.deb
ãªã©ïŒãçæããããšã確èªãããããã°ã·ã³ãã«ãç Žæ£ããªãããã«ããŸãã
ãããã°ã·ã³ãã«ãèŠã€ããããšãæã é¢åã§ããããšãçè§£ããŠããŸããæ¢åã® DWARF ããŒã¿ããé¡äŒŒããŠãããåäžã§ã¯ãªããã€ããªããã°ã©ã ã® DWARF ããŒã¿ãèªåçã«åæ§ç¯ã§ãã AI ã·ã¹ãã ãéçºããŠããŸãããããæºåãæŽããšãOpenResty XRay ã¯ããããã°ã·ã³ãã«ãäžè¶³ããŠãã倿°ã®ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãã€ããªã培åºçã«åæã§ããããã«ãªããŸãã
OpenResty XRay ã®ããã€ãã®åºæ¬çãªã¢ãã©ã€ã¶ãŒã¯ãããããã°ã·ã³ãã«ããå¿ èŠãšããã«åäœããŸããå®éãC/C++ 颿°ã¬ãã«ã§ãµãŒãããŒãã£ã®å°æã©ã€ãã©ãªã®ã¡ã¢ãªãªãŒã¯ãæ£ç¢ºã«ç¹å®ããã®ãé¡§å®¢ã«æäŒã£ãããšããããŸãã
ð èªåã®ã¢ãã©ã€ã¶ãŒãæžãããšã¯ã§ããŸããïŒ
ã¯ãïŒY èšèªïŒãŸãã¯YlangïŒã䜿çšããŠç¬èªã®ã¢ãã©ã€ã¶ãŒãæžãããšãã§ããŸããYlang ã¯ãç¬èªã®åçãã¬ãŒã¹æ¡åŒµãåãã C ããã°ã©ãã³ã°èšèªã®å€§ããªãµãã»ããã§ãããŸããæ¡åŒµæ©èœãåãã Lua èšèªã®ãµãã»ããã§ãã Ylua èšèªãšãSQL æ¹èšã§ãã YSQL ãæäŸããŠããŸãã
ð ãã®ä»ã®è³ªå
ð ãããã®ã«ãŒãã«ã¡ãã»ãŒãžã¯åœ±é¿ããããŸããïŒ
ð vsyscall read attempt denied
ã©ã€ãé²é³ãéå§ããåŸãã«ãŒãã«ã¯ä»¥äžã®ãããªã¡ãã»ãŒãžãæããããšããããŸãããã®ã¡ãã»ãŒãžã¯ç¡å®³ã§ãããç¡èŠã§ããŸãã
[29389.731303] redis-server[298169] vsyscall read attempt denied -- look up the vsyscall kernel parameter if you need a workaround ip:7f000013d241 cs:33 sp:2aaacbcf6f08 ax:0 si:7f00003db659 di:ffffffffff600000
ð 1 ã€ã®ã©ã€ã»ã³ã¹ã§äœã¢ã«ãŠã³ãããµããŒããããŸããïŒ
1 ã€ã®ã©ã€ã»ã³ã¹ã§ 2 ã€ã®ã¢ã«ãŠã³ããã°ã€ã³ããµããŒããããŸãã
ð OpenResty XRay ã® HTTP ãããã·ãã©ã®ããã«èšå®ããŸããïŒ
OpenResty XRay Agent ã HTTP ãããã·ãä»ããŠãããªãã¯ãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ããå¿ èŠãããç°å¢ã«ãããã€ãããŠããå Žåããã®ããã¥ã¡ã³ãã®æé ã«åŸã£ãŠ HTTP ãããã·ãèšå®ããŠäœ¿çšã§ããŸãã